一、 数字
整型int:通常被称为整型或整数,是正或负整数,不带小数点
定义:
var = 10 #本质var = int(10)
浮点型float:由整数部分与小数部分组成
定义:
var = 10.01 #本质var = float(10.01)
复数complex:由实数部分和虚数部分组成,
定义:
a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
扩展知识-进制转换
#十进制转二进制:
>>> print(bin(10)) 0b1010
#十进制转八进制
>>> print(oct(10)) 0o12
#十进制转十六进制
>>> print(hex(10)) 0xa
二、字符串
Python 不支持单字符类型,单字符也在Python也是作为一个字符串使用
定义:
name = 'Yim' #还可以使用双引号和多引号
1、字符串内建函数
序号 |
方法及描述 |
1 |
capitalize() |
2 |
center(width,
fillchar) |
3 |
count(str,
beg= 0,end=len(string)) |
4 |
bytes.decode(encoding="utf-8",
errors="strict") |
5 |
encode(encoding='UTF-8',errors='strict') |
6 |
endswith(suffix,
beg=0, end=len(string)) |
7 |
expandtabs(tabsize=8) |
8 |
find(str,
beg=0 end=len(string)) |
9 |
index(str,
beg=0, end=len(string)) |
10 |
isalnum() |
11 |
isalpha() |
12 |
isdigit() |
13 |
islower() |
14 |
isnumeric() |
15 |
isspace() |
16 |
istitle() |
17 |
isupper() |
18 |
join(seq) |
19 |
len(string) |
20 |
ljust(width[,
fillchar]) |
21 |
lower() |
22 |
lstrip() |
23 |
maketrans() |
24 |
max(str) |
25 |
min(str) |
26 |
replace(old,
new [, max]) |
27 |
rfind(str,
beg=0,end=len(string)) |
28 |
rindex(
str, beg=0, end=len(string)) |
29 |
rjust(width,[,
fillchar]) |
30 |
rstrip() |
31 |
split(str="",
num=string.count(str)) |
32 |
splitlines([keepends]) |
33 |
startswith(str,
beg=0,end=len(string)) |
34 |
strip([chars]) |
35 |
swapcase() |
36 |
title() |
37 |
translate(table,
deletechars="") |
38 |
upper() |
39 |
zfill
(width) |
40 |
isdecimal() |
2、 常用操作
#※※※※※ #按索引取值(正向取+反向取) name = 'Yim' print(name[0]) #Y print(name[-1]) #m # 切片(顾头不顾尾,步长) msg = 'Hello World' print(msg[0:2]) #He print(msg[0:7:2]) #HloW # 长度len name = 'Yim' print(len(name)) #3 # 成员运算in和not in msg = 'Hello World' print('World' in msg) #True print('World' not in msg) #False # 移除空白strip password1 = ' 123456 ' password2 = '*****123456*****' print(password1.strip()) #123456 print(password2.strip('*')) #123456 # 切分split(默认分隔符为空格) user_info='root:x:0:0::/root:/bin/bash' print(user_info.split(':')) #['root', 'x', '0', '0', '', '/root', '/bin/bash'] print(user_info.split(':',1)) #['root', 'x:0:0::/root:/bin/bash'] #※※※※ #移除左边空白lstrip,移除右边空白rstrip password = '*****12345******' print(password.lstrip('*')) #12345****** print(password.rstrip('*')) #*****12345 #检查字符串是否以obj开始或结束startswith,endswith name = 'Yim' print(name.startswith('Y')) #True print(name.endswith('m')) #True #替换replace msg = 'My name is Yim' print(msg.replace('Yim','Jim',1)) #指定替换一次(默认),My name is Jim #格式化,Format print('My name is {},my age is {}'.format('Yim',25)) #My name is Yim,my age is 25 print('My name is {0},my age is {1}'.format('Yim',25)) #My name is Yim,my age is 25 print('My name is {name},my age is {age}'.format(name='Yim',age=25)) #My name is Yim,my age is 25 # 以指定字符串作为分割符,将所有的元素合并为一个新的字符串,join msg = ['My','name','is','Yim'] print(' '.join(msg)) #My name is Yim # 反向切分rsplit(默认分隔符为空格) user_info='root:x:0:0::/root:/bin/bash' print(user_info.rsplit(':',1)) #['root:x:0:0::/root', '/bin/bash'] # center,ljust,rjust,zfill print('Yim'.center(30,'-')) #-------------Yim-------------- print('Yim'.ljust(30,'-')) #Yim--------------------------- print('Yim'.rjust(30,'-')) #---------------------------Yim print('Yim'.zfill(30)) #000000000000000000000000000Yim #※※※ #find,rfind,检测 str 是否包含在字符串中,可以指定范围(跟index差不多,区别是找不到不会报错) msg='hello world' print(msg.find('ell')) #从左到右找,如果有,则返回第一个字符的索引 print(msg.index('o',5,9)) #指定查找的起始范围,7 print(msg.find('zll')) #从左到右找,如果没有,返回-1 #index,rindex,找出某个值第一个匹配项的索引位置 msg='hello world' print(msg.index('ell')) #从左到右找,如果有,则返回第一个字符的索引 print(msg.index('o',5,9)) #指定查找的起始范围,7 #count,检测str 在 string 里面出现的次数,可以指定范围 msg='hello world' print(msg.count('o')) #2 print(msg.count('o',5,9)) #1 #expandtabs,把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是8 msg = 'My\tname is Yim' print(msg.expandtabs(4)) #My name is Yim #capitalize,upper,lower,title,swapcase msg='hello World' print(msg.capitalize()) #首字母大写,Hello world print(msg.upper()) #小写字母转大写字母,HELLO WORLD print(msg.lower()) #大写字母转小写字母,hello world print(msg.title()) #所有单词都是以大写开始,其余字母均为小写,Hello World print(msg.swapcase()) #大写转换为小写,小写转换为大写,HELLO wORLD #isupper,islower,istitle msg= 'hello world' print(msg.isupper()) #判断字符串是否是大写,False print(msg.islower()) #判断字符串是否是小写,Ture print(msg.istitle()) #判断所有单词都是以大写开始,False #isalnum,isalpha,isspace,isidentifier msg = 'abc123' print(msg.isalnum()) #判断字符串是否是由字母或数字组成,True print(msg.isalpha()) #判断字符串是否是由字母组成,False print(msg.isspace()) #判断字符串是否只包含空格,False print(msg.isidentifier()) #判断字符串是否是合法的标识符,True #isdigit判断字符串是否只包含数字,isdecimal判断字符串是否只包含十进制字符,isnumeric判断字符串中只包含数字字符 num1=b'4' #bytes num2=u'4' #unicode,python3中无需加u就是unicode num3='四' #中文数字 num4='壹' num5='Ⅳ' #罗马数字 #bytes,unicode print(num1.isdigit()) #True print(num2.isdigit()) #True print(num3.isdigit()) #False print(num4.isdigit()) #False print(num5.isdigit()) #False #unicode print(num2.isdecimal()) #True print(num3.isdecimal()) #False print(num4.isdecimal()) #False print(num5.isdecimal()) #False #unicode,汉字,罗马 print(num2.isnumeric()) #True print(num3.isnumeric()) #True print(num4.isnumeric()) #True print(num5.isnumeric()) #True
三、 列表
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现
列表的数据项不需要具有相同的类型。与字符串的索引一样,列表索引从0开始
定义:
list = [1, 2, 3, 4, 5 ]
1、列表函数&方法
Python包含以下函数:
序号 |
函数 |
1 |
len(list) |
2 |
max(list) |
3 |
min(list) |
4 |
list(seq) |
Python包含以下方法:
序号 |
方法 |
1 |
list.append(obj) |
2 |
list.count(obj) |
3 |
list.extend(seq) |
4 |
list.index(obj) |
5 |
list.insert(index, obj) |
6 |
list.pop(obj=list[-1]) |
7 |
list.remove(obj) |
8 |
list.reverse() |
9 |
list.sort([func]) |
10 |
list.clear() |
11 |
list.copy() |
2、常用操作
#※※※※※ # 按索引存取值(正向存取+反向存取):即可存也可以取 list = [1,2,3,4,5] print(list[0]) #1 print(list[-1]) #5 #修改 list = [1,3,3,4,5] list[1] = 2 print(list) #[1, 2, 3, 4, 5] # 切片,得到子列表(顾头不顾尾,步长) list = [1,2,3,4,5] print(list[0:4]) #[1, 2, 3, 4] print(list[0:4:2]) #[1, 3] # 长度len list = [1,2,3,4,5] print(len(list)) #5 # 成员运算in和not in list = [1,2,3,4,5] print(2 in list) #True print(6 not in list) #True # 追加append list = [1,2,3,4,5] list.append(6) print(list) #[1, 2, 3, 4, 5, 6] # 插入insert list = [1,2,3,4,5] list.insert(1,8) print(list) #[1, 8, 2, 3, 4, 5] # 删除pop list = [1,2,3,4,5] list.pop() #按照索引删除,默认是最后一个元素 print(list) #[1, 2, 3, 4] list.pop(0) #删除第一个元素 print(list) #[2, 3, 4] #删除remove list = [1,2,3,4,5] list.remove(2) #按照值删除,不会返回删除的值 print(list) #[1, 3, 4, 5] # 循环for list = [1,2,3,4,5] for i in list:print(i) #※※※※ #统计某个元素在列表中出现的次数count list = [1,2,3,4,5,1,2,3] print(list.count(2)) #2 #在列表末尾一次性追加另一个序列中的多个值extend list = [1,2,3,4,5] list.extend([6,7,8,9,10]) print(list) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] #※※※ # 清空列表clear list = [1,2,3,4,5] list.clear() print(list) #[] # 复制列表copy list = [1,2,3,4,5] a = list.copy() print(a) #[1, 2, 3, 4, 5] #反向列表中元素reverse list = [1,2,3,4,5] list.reverse() print(list) #[5, 4, 3, 2, 1] # 对原列表进行排序sort list = [1,-1,0,3,2] list.sort() print(list) #[-1, 0, 1, 2, 3] list.sort(reverse=True) #反向排序 print(list) #[3, 2, 1, 0, -1] # 从列表中找出某个值第一个匹配项的索引位置index list = [1,2,3,4,5] print(list.index(2)) #1
四、 元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改
元组使用小括号,列表使用方括号
定义:
tuple = (1,2,3,4,5)
1、元组内置函数
序号 |
方法及描述 |
1 |
len(tuple) |
2 |
max(tuple) |
3 |
min(tuple) |
4 |
tuple(seq) |
2、 常用操作
#※※※※※ # 按索引取值(正向取+反向取):只能取 tuple = (1,2,3,4,5) print(tuple[0]) #1 print(tuple[-1]) #5 # 切片(顾头不顾尾,步长) tuple = (1,2,3,4,5) print(tuple[0:4]) #(1, 2, 3, 4) print(tuple[0:4:2]) #(1, 3) # 长度len tuple = (1,2,3,4,5) print(len(tuple)) #5 # 成员运算in和not in tuple = (1,2,3,4,5) print(2 in tuple) #True print(6 not in tuple) #True #※※※※ #从元组中找出某个值第一个匹配项的索引位置index tuple = (1,2,3,4,5) print(tuple.index(2)) #1 #统计某个元素在元组中出现的次数count tuple = (1,2,3,4,5,1,2) print(tuple.count(2)) #2 # 循环 tuple = (1,2,3,4,5) for i in tuple:print(i) # while取出元组内的元素 tuple = (1,2,3,4,5) index = 0 while index < len(tuple): print(tuple[index]) index += 1 #for+range取出元组的下标和元素 tuple = ('a','b','c','d','e') for i in range(len(tuple)): print(i,tuple[i])
五、字典
字典是另一种可变容器模型,且可存储任意类型对象,字典是无序的
键必须是不可变和唯一的,但值则不必
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
五种定义方法:
#传统的文字表达方式
a = {'name':'Yim','age':25,'gender':'male'}
#字典键值表
b = dict(name = 'Yim', age = 25, gender = 'male')
#动态分配键值
c = {}
c['name'] = 'Yim'
#字典键值元组表
d = dict([('name','Yim'),('age',25),('gender','male')])
#所有键的值都相同或者赋予初始值
e = dict.fromkeys(['height','weight'],'normal')
1、字典内置函数&方法
Python字典包含了以下内置函数:
序号 |
函数及描述 |
1 |
len(dict) |
2 |
str(dict) |
3 |
type(variable) |
Python字典包含了以下内置方法:
序号 |
函数及描述 |
1 |
radiansdict.clear() |
2 |
radiansdict.copy() |
3 |
radiansdict.fromkeys() |
4 |
radiansdict.get(key, default=None) |
5 |
key in dict |
6 |
radiansdict.items() |
7 |
radiansdict.keys() |
8 |
radiansdict.setdefault(key, default=None) |
9 |
radiansdict.update(dict2) |
10 |
radiansdict.values() |
11 |
pop(key[,default]) |
12 |
popitem() |
2、常见操作
#※※※※※ # 按key存取值:可存可取 info = {'name':'Yim','age':25,'sex':'male'} print(info['name']) #Yim # 修改 info = {'name':'Yim','age':25,'sex':'male'} info['age'] = 26 print(info) #{'name': 'Yim', 'age': 26, 'sex': 'male'} # 增加 info = {'name':'Yim','age':25,'sex':'male'} info['hobbies']=['read','music','play'] print(info) #{'name': 'Yim', 'age': 25, 'sex': 'male', 'hobbies': ['read', 'music', 'play']} #删除字典内所有元素clear info = {'name':'Yim','age':25,'sex':'male'} info.clear() print(info) #{} #返回一个字典的浅复制copy info = {'name':'Yim','age':25,'sex':'male'} a = info.copy() print(a) #{'name':'Yim','age':25,'sex':'male'} # 长度len info = {'name':'Yim','age':25,'sex':'male'} print(len(info)) #3 # 成员运算in和not in info = {'name':'Yim','age':25,'sex':'male'} print('name' in info) #True print('hobbies' not in info) #True # 删除pop,删除字典给定键 key 所对应的值,返回值为被删除的值 info = {'name':'Yim','age':25,'sex':'male'} print(info.pop('sex')) #male print(info) #{'name': 'Yim', 'age': 25} print(info.pop('hobbies','没有这个key')) #没有这个key # 键keys(),值values(),键值对items() info = {'name':'Yim','age':25,'sex':'male'} print(info.keys()) #dict_keys(['name', 'age', 'sex']) print(info.values()) #dict_values(['Yim', 25, 'male']) print(info.items()) #dict_items([('name', 'Yim'), ('age', 25), ('sex', 'male')]) for key in info.keys(): print(key) for val in info.values(): print(val) for item in info.items(): print(item) # 循环 info = {'name':'Yim','age':25,'sex':'male'} for i in info: print(i) #取出的是key #※※※※ # get,返回指定键的值 info = {'name':'Yim','age':25,'sex':'male'} print(info.get('name')) #Yim print(info.get('hobbies','没有这个key')) #没有这个key # popitem,随机返回并删除字典中的一对键和值 info = {'name':'Yim','age':25,'sex':'male'} print(info.popitem()) #('sex', 'male') print(info) #{'name': 'Yim', 'age': 25} # 变量解压 info = {'name':'Yim','age':25,'sex':'male'} for k,v in info.items(): print(k,v) # setdefault,如果键不存在于字典中,将会添加键并将值设为default #有则不改,返回已经有的值,没有则新增,返回新增的值 info = {'name':'Yim','age':25,'sex':'male'} print(info.setdefault('hobbies',['read','music'])) #['read', 'music'] print(info) #{'name': 'Yim', 'age': 25, 'sex': 'male', 'hobbies': ['read', 'music']} #※※※ # update,更新 info = {'name':'Yim','age':25,'sex':'male'} info_new1 = {'hobbies':['read','music']} info_new2 = {'name':'Jim'} info.update(info_new1) #键不存在则添加 print(info) #{'name': 'Yim', 'age': 25, 'sex': 'male', 'hobbies': ['read', 'music']} info.update(info_new2) #键存在则更新 print(info) #{'name': 'Jim', 'age': 25, 'sex': 'male', 'hobbies': ['read', 'music']} # fromkeys,创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 info = info.fromkeys(['name','age','sex'],None) print(info) #{'name': None, 'age': None, 'sex': None}
六、集合
集合(set)是一个无序不重复元素的序列
基本功能是进行成员关系测试和删除重复元素
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
定义:
set = {'a','b','c','d'}
1、集合内置函数和操作符
Python包含以下内置函数:
序号 |
方法名称 |
操作 |
备注 |
1 |
s.issubset(t) |
如果s是t的子集,则返回True,否则返回False |
子集 < <= |
2 |
s.issuperset(t) |
如果s是t的超集,则返回True,否则返回False |
父集 > >= |
3 |
s.union(t) |
返回一个新集合,该集合是s和t的并集 |
并集 | |
4 |
s.intersection(t) |
返回一个新集合,该集合是s和t的交集 |
交集 & |
5 |
s.difference(t) |
返回一个新集合,该集合是s的成员,但不是t的成员 |
差集 - |
6 |
s.symmetric_difference(t) |
返回一个新集合,该集合是s或t的成员,但不是s和t共有的成员 |
对称差集 ^ |
7 |
s.copy() |
返回一个新集合,它是集合s的浅复制 |
|
集合操作符:
2、常见操作
#※※※※※ # 去重 s = {'a','b',1,1,2,2} print(s) #{'b', 'a', 2, 1} # 长度len s = {'a','b','c'} print(len(s)) #3 # 成员运算in和not in s = {'a','b','c'} print('a' in s) #True print('d' not in s) #True # |合集 s1 = {'a','b','c','d'} s2 = {'c','d','e','f'} print(s1 | s2) #{'c', 'f', 'e', 'a', 'b', 'd'} # &交集 s1 = {'a','b','c','d'} s2 = {'c','d','e','f'} print(s1 & s2) #{'d', 'c'} # -差集 s1 = {'a','b','c','d'} s2 = {'c','d','e','f'} print(s1 - s2) #{'a', 'b'} # ^对称差集,不同时存在的元素 s1 = {'a','b','c','d'} s2 = {'c','d','e','f'} print(s1 ^ s2) #{'b', 'a', 'e', 'f'} # == 是否相等,!= 是否不相等 s1 = {'a','b','c','d'} s2 = {'c','d','e','f'} print(s1 == s2) #False print(s1 != s2) #True # >,>= ,<,<= 父集,子集 s1 = {'a','b','c','d'} s2 = {'a','b'} print(s1 > s2) #True print(s1 >= s2) #True print(s1 < s2) #False print(s1 <= s2) #False #※※※※ # pop 随机删除元素,并返回删除的元素 s1 = {'a','b','c','d'} print(s1.pop()) #a print(s1) #{'b', 'd', 'c'} # remove 按值删除元素 s1 = {'a','b','c','d'} s1.remove('a') print(s1) #{'c', 'b', 'd'}
七、总结
按存储空间的占用分(从低到高)
数字 字符串 集合:无序,即无需存索引相关信息 元组:有序,需要存索引相关信息,不可变 列表:有序,需要存索引相关信息,可变,需要处理数据的增删改 字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改
按存值个数区分
标量/原子类型 | 数字,字符串 |
容器类型 | 列表,元组,字典 |
按可变不可变区分
可变 | 列表,字典 |
不可变 | 数字,字符串,元组 |
按访问顺序区分
直接访问 | 数字 |
顺序访问(序列类型) | 字符串,列表,元组 |
key值访问(映射类型) | 字典 |