Python的数据类型有多种,主要有数字,字符串,列表、元组,字典,集合
1.数字类型
python数字类型:
整型,如1,2
浮点数,如1.2 1.4E4
布尔型,True,False
复数,(-5+4j)
2.bytes类型
文本总是Unicode str类型表示
二进制数据由bytes类型表示
>>> str = "我爱北京天安门">>> print(str.encode()) b'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8' >>> byte = str.encode() #将字符串编码成byte类型 >>> print(byte.decode()) #解码二进制byte类型为字符串 我爱北京天安门
3.字符串
字符串需要用引号引起来,可以使用单引号,双引号,三引号。字符串是不可变的。
字符串相关操作
#返回字符‘m’的索引 >>> print(name.find("m")) 0 #格式化字符串 >>> print(name1.format(name="alex",age=23)) my name is alex,age is 23 #以字典方式进行赋值 >>> print(name1.format_map({"name": "oldboy", "age": 29})) my name is oldboy,age is 29 #判断是否是数字和字母 >>> print("1234dd".isalnum()) True #判断是否是字母 >>> print("adbd".isalpha()) True #判断是否是十进制 >>> print("123445".isdecimal()) True #判断是否是整数 >>> print("123".isdigit()) True #判断是否是合法的标识符 >>> print("-1A".isidentifier()) False #按某个字符将其相连 >>> print("+".join(['1', '2', '3'])) 1+2+3 #去掉字符串左右两边的空格 >>> print("\tAlex\t".strip()) Alex #字符串替换 >>> print("alex li".replace('l','L')) aLex Li #split按某字符将其拆开以列表显示 >>> print("1+2+3+4".split("+")) ['1', '2', '3', '4'] #按”\n”将字符串进行拆分,以列表方式显示 >>> print("1+2\n+3+4".splitlines()) ['1+2', '+3+4'] #以标题方式显示 >>> print("alex li".title()) Alex Li
4.列表
列表是python常用数据类型之一,以“[]”表示,列表的常见操作切片,列表解析
#定义列表 >>> names = ["Alex","Hudaohong","Oldboy","tom"] #切片操作 #获取列表的第1元素 >>> names[1:2] ['Hudaohong'] #获取列表第0,1元素 >>> names[:2] ['Alex', 'Hudaohong'] #-1指最右边一个元素 >>> names[-4:-1:2] ['Alex', 'Oldboy'] >>> names[:-1:2] ['Alex', 'Oldboy'] #向列表中追加元素 >>> names.append("Lucy") >>> names ['Alex', 'Hudaohong', 'Oldboy', 'tom', 'Lucy'] #向列表中插入元素 >>> names.insert(3,"Tom") >>> names ['Alex', 'Hudaohong', 'Oldboy', 'Tom', 'tom', 'Lucy'] #删除元素,默认是删除最后一个元素,如果删除的元素不存在,会报异常 >>> names.pop() 'Lucy' >>> names.pop("Lucy") Traceback (most recent call last): File "", line 1, in names.pop("Lucy") TypeError: 'str' object cannot be interpreted as an integer #返回列表元素的索引 >>> names[names.index("Tom")] 'Tom' #统计元素个数 >>> names.count("Tom") 1 #将列表反转 >>> names ['tom', 'Tom', 'Oldboy', 'Hudaohong', 'Alex'] >>> names.reverse() >>> names ['Alex', 'Hudaohong', 'Oldboy', 'Tom', 'tom'] #排序 >>> names.sort() >>> names ['Alex', 'Hudaohong', 'Oldboy', 'Tom', 'tom']
列表的复制有浅复制与深复制之别
>>> import copy >>> names = ["Alex","Hudaohong","Oldboy","Tom",["Jim","Lucy"]] #浅复制 >>> names1 = names.copy() #深复制 >>> names2=copy.deepcopy(names) #修改列表第2个元素 >>> names[1] = "胡道宏"#修改嵌套列表的第1个元素 >>> names[4][0]="JIM">>>#显示打印结果 >>> print("{name} is names".format(name=names)) ['Alex', '胡道宏', 'Oldboy', 'Tom', ['JIM', 'Lucy']] is names >>> print("{name} is names1".format(name=names1)) ['Alex', 'Hudaohong', 'Oldboy', 'Tom', ['JIM', 'Lucy']] is names1 >>> print("{name} is names2".format(name=names2)) ['Alex', 'Hudaohong', 'Oldboy', 'Tom', ['Jim', 'Lucy']] is names2
列表解析
列表解析是根据已有列表高效快速生成新列表的方式,它是迭代机制的一种应用
语法结构 [expression for iter_var in iterable] [expression for iter_var in iterable if cond_expr] >>> l1=[1,2,3,4] #列表解析生成新的列表 >>> l2 = [I ** 2 for I in l1] >>> l2 [1, 4, 9, 16] >>> l3 = [I ** 2 for I in l1 if I> 2] >>> l3 [9, 16]
5.字典
Python中的字典是无序的,是以键值对的形式存在,定义字典是需要用”{}”,如{”name”:”Tom”,”age”:23}
#定义字典 >>> info = {"stu01":"Tom","stu02":"Lucy","stu03":"Jim"}#通过键值获取字典值 >>> info["stu01"]'Tom' #增加 >>> info["stu04"] = "Baby" #删除 >>> del info["stu04"] >>> info.pop("stu03") 'Jim' #如果某个值不在字典中,不会报异常 >>> info.get("stu04") >>> info.get("stu01") 'Tom' #判断个值是否在字典中 >>> print("stu01" in info) True #update合并字典,如果有同名字典会覆盖 >>> dictb={"stu100":"zhangsan","stu02":"LiSi","stu101":"WangWu"} >>> info.update(dictb) >>> info {'stu01': 'Tom', 'stu02': 'LiSi', 'stu100': 'zhangsan', 'stu101': 'WangWu'} #以元组方式显示字典的键值 >>> info_c = info.items() >>> print(info_c) dict_items([('stu01', 'Tom'), ('stu02', 'LiSi'), ('stu100', 'zhangsan'), ('stu101', 'WangWu')]) #初始化一个新字典 >>> dictC=dict.fromkeys([6,7,8],[1,{"name":"Boy"},444]) >>> dictC {6: [1, {'name': 'Boy'}, 444], 7: [1, {'name': 'Boy'}, 444], 8: [1, {'name': 'Boy'}, 444]} # 将会3个字典中的name都改了,类似于浅复制 >>> dictC[7][1]["name"] = "girls" >>> dictC {6: [1, {'name': 'girls'}, 444], 7: [1, {'name': 'girls'}, 444], 8: [1, {'name': 'girls'}, 444]} #循环字典,推荐使用基本方式 >>> for key in dictC:print(key,dictC[key])6 [1, {'name': 'girls'}, 444]7 [1, {'name': 'girls'}, 444]8 [1, {'name': 'girls'}, 444] #数据量大时不适合 >>> for k,v in info.items():print(k,v) stu01 Tom stu02 LiSi stu100 zhangsan stu101 WangWu
6.集合
集合set 可以去重 无序 关系测试: 交集,并集,差集等
集合操作
#集合可以去重 >>> list01 = [1, 4, 5, 7, 3, 5, 1, 9] >>> list01= set(list01) >>> list01 {1, 3, 4, 5, 7, 9} >>> list02=set([2,4,6,8,3]) #交集 >>> print(list01.intersection(list02)) {3, 4} >>> print(list01&list02) {3, 4} #并集 >>> print(list01.union(list02)) {1, 2, 3, 4, 5, 6, 7, 8, 9} >>> print(list01 | list02) {1, 2, 3, 4, 5, 6, 7, 8, 9} #差集,list01中有,list02中没有 >>> print(list01.difference(list02)) {1, 5, 9, 7} >>> print(list01 - list02) {1, 5, 9, 7} #子集:判断list03是否list01的子集 >>> list03 = set([1,3,7]) >>> print(list03.issubset(list01)) True #判断list01是否list3的子集 >>> print(list01.issubset(list03)) False # 对称差集,两个集合中互为没有的> >> print(list01.symmetric_difference(list03)) {4, 5, 9} >>> print(list01 ^ list03) {4, 5, 9} #判断两个集合,如果没有合集则返回True >>> list04=([5,6,8]) >>> print(list03.isdisjoint(list04)) True #添加 >>> list01.add(99) >>> list01.update([88,77,55]) >>> print(list01) {1, 3, 4, 5, 99, 7, 9, 77, 55, 88} #删除集合元素 >>> list01.pop() 1 #remove删除时不返回元素 >>> list01.remove(77) >>> list01 {3, 4, 5, 99, 7, 9, 55, 88}