Python课程回顾(day06)
数据类型的补充
一、元组(tuple):元组跟列表唯一不一样的就是元组是一个不可变的列表,用于记录只有读的需求而没有取的需求的多个值,定义方式是在小括号内用逗号分隔开来的多个任意类型的值。
元组与列表的内置方法基本等同于列表,例如len(长度),成员运算(in/not in),循环,切片等等,它也可以按照索引取值,所以它也是有序的
总结来说tuple的类型是可以存放多个值且不可变而有序的的类型。
二、字典(dict):字典是用来记录多个不同种类的值,定义方式是在花括号内使用键值对(key:value)用逗号分割开的多个不同种类的值。
key的功能通常是用于对value的描述的,key通常是字符串类型,但其实key其实是不可变类型。
字典常用的操作及内置方法:
1:取值,字典取值的方式是按key取值,可存可取。字典与可以使用get方法取值
d={'x':1} print(d['x']) 通过key取值 print(id(d)) 查看id d['x']=1111 改变key的值 print(d) print(id(d)) 改变后的值与改变之前的值的内存地址是一样的 d['y']=2222 可以直接添加新的key print(d)
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
v=d.get('namexxxxxxx') 此处get要取得key不存在字典内,但不会报错,会返回None
print(v) 若直接根据字典的key取字典内不存在的值,则会报错!
2:长度,字典的长度是按照key来计算的,有多少个key长度就为几。
d={'x':1,'y':2,'z':3} print(len(d))
3
3.成员运算in、not in:字典中的成员运算只能判断key是否存在在通过key去判断值,不可以直接判断key后面的值存不存在。
d={'x':1,'y':2,'z':3} print(1 in d)
False
4.删除:字典中除了del只能使用pop与popitem删除,使用pop删除key会返回key在当前列表所对应的值。popitem删除是随机删除,但会返回key与key对应的值。
d={'x':1,'y':2,'z':3} res=d.pop('y') print(d) print(res) {'x': 1, 'z': 3} 2 res=d.popitem() print(res) ('z', 3)
5.键keys.(),值values.(),键值对items.():
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]} print(list(d.keys())) 使用列表类型打印出字典d里的所有key print(list(d.values())) 使用列表类型打印出字典d里的所有value
print(list(d.items()) 使用列表类型打印出字典d里的所有(key,value)
6.循环
for k in d.keys(): print(k) 使用for循环将字典d里的keys全部取出 for k in d: 此处不加任何后缀默认取出全部的key print(k)
for v in d.values():
print(v) 使用for循环将字典d里的value全部取出
for k,v in d.items():
print(k,v) 使用for循环将字典d里的所有键值对全部取出(key,value)
7.update、setdefault添加
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]} 字典默认的添加操作方式:
d['x']='1111' 若有X则覆盖,若没有则添加
d.update({'x':1,'name':"EGON"}) update可以更新字典覆盖原来的value值,也可添加多个新的key:value值 print(d) d.update({ })
setdefault
d={"x":1,"y":2}
res=d.setdefault('x',11111) 在key存在的情况下不修改值,会返回原值
print(d)
print(res) res=1
8.fromkeys:需要是快速制造出一个新的列表,value的初始值全部为None,而key则是来源于列表。
keys=['name','age','sex'] d={} for k in keys: 使用for循环制造新的字典 d[k]=None d={}.fromkeys(keys,None) 使用fromkeys制造新字典 fromkeys后的参数只需填key的来源变量名即可 value默认为None print(d) {}.fromkeys(列表,None)
三、集合
定义方式:在花括号内用逗号分隔开的多个值
特点:1.每个值必须是不可改变类型
2.集合是无序的
3.集合内的元素不能重复
集合的作用:
集合的主要作用是关系运算以及去重
使用方法:
1.集合内不能有列表(可变)等其他可变类型的值
2.集合内会将重复的值去掉直至剩余一个(字典会将相同的key后的值按照最后一个key作为反馈值)
3.集合将列表转换成集合时若列表内含有子列表,子列表放不进去的。会报错
一、关系运算
pythons={'egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯'} linuxs={'欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb'} Pythons & Linuxs 将两个集合内相同的值取出(&) Pythons | Linuxs 将两个集合内所有值取出(|) :会去重 Pythons - Linuxs 将只在减号之前的集合内出现的值取出(-) 减号之后集合内也同样出现的值不包含在内 Pythons ^ Linuxs 将只在第一个集合内及只在第二个集合内出现的值取出(^) 两个集合内都出现的值不包含在内
二、父子集:即包含与被包含的关系
s1={1,2,3} s2={1,2} print(s1 >= s2) s2内的值在s1中也有且s1中的值比s2要更加多 即s1 > s2
print(s1.issuperset(s2)) superset为父集,后边括号内的元素为要比较的子集 print(s2.issubset(s1)) subset为子集,后边括号内的元素为要比较的父集
s1={1,2,3}
s2={3,2,1}
print(s1 == s2) 两个集合相等(因为是无序)的话,s1与s2是相互父子集
三、去重:集合去重是有局限性的,一会打乱原值的顺序,二只能针对不可变的值去重。
stus=['egon','lxx','lxx','alex','alex','yxx'] new_l=list(set(stus)) 使用列表将去重后的结果让入列表 print(new_l)
四、添加,删除
s1={1,2,3} s1.update({3,4,5}) 会在更新集合过程中再次去重 print(s1) print(s1.pop()) 弹出也是随机弹出 print(s1)
s1.remove(2) remove删除
print(s1)
s1.discard(4) 若删除集合内不存在的值,discard不会报错且会反馈集合的原值 remove若同样操作则会报错
s1.add(4) add是独有添加功能 可以添加单个值
print(s1)
五、判断是否有交集
s1={1,2,3} s2={4,5} print(s1.isdisjoint(s2)) isdisjoint是判断两个集合是否完全没有交集
总结:
可存多个值,是无序的
是可变不可hash类型的