变量:用来记录状态的变化。
基本类型:字符串、数字、列表、元组、字典。
分类:可变与不可变
如此可见:字符串类型就是不可变的(赋予新值时,地址变了)
由此可见:列表是可变的(更改值,地址不变)
同样,数字、元组为不可变类型,字典为可变类型。
访问顺序:
直接访问(变量名):数字
顺序访问(索引值):字符串、列表、元组
映射(键-值对):字典
还可分为:
容器类型(可存放多个值):列表、元组、字典
原子类型(只能存放一个值):数字、字符串
集合:
定义方法:大括号,元素之间逗号间隔:
set()
无序;
由不同的元素组成;
集合中元素必须是不可变类型;
简单操作:
s.pop():随机删除
s.remove():删除集合中不存在的元素会报错
s.discard():删除集合中不存在的元素不会报错
集合关系运算:交集、并集、差集等
1 python_1 = ['chen','sun','li','liu']
2 linux_1 = ['liu','sun','cris']
3 p_s = set(python_1) #转集合,依次遍历列表,将不相同的元素存放在集合中,顺序已改变
4 l_s = set(linux_1)
5 print(p_s&l_s) #求交集
6 print(p_s.intersection(l_s)) #求交集
7
8 >>{'liu', 'sun'}
9 >>{'liu', 'sun'}
1 print(p_s.union(l_s)) #求并集
2 print(p_s|l_s) #求并集
3
4 >>{'cris', 'sun', 'li', 'liu', 'chen'}
5 >>{'cris', 'sun', 'li', 'liu', 'chen'}
1 print(p_s-l_s) #求差集
print(p_s.difference(l_s))
2 >>{'chen', 'li'}
1 #交叉补集(并-交)
2 print(p_s.symmetric_difference(l_s))
3 print(p_s^l_s)
4 >>>{'cris', 'chen', 'li'}
5 >>>{'cris', 'chen', 'li'}
1 s1 = {2,3,4}
2 s2 = {'s',9,0}
3 print(s1.isdisjoint(s2)) #两个集合交集为空返回True
4 >>>True
1 s1 = {1,2,3,4}
2 s2 = {1,2}
3 print(s2.issubset(s1)) #s2是s1的子集返回True
4 print(s1.issuperset(s2))#s1是s2的父集返回True
5 >>>True
6 >>>True
1 python_1 = ['chen','sun','li','liu']
2 linux_1 = ['liu','sun','cris']
3 p_s = set(python_1)
4 l_s = set(linux_1)
5 p_s.difference_update(l_s) #p_s=p_s-l_s
6 print(p_s)
7 >>>{'li', 'chen'}
1 s1 = {2,3,4}
2 s2 = {5,6,2}
3 s1.update(s2) #更新多个值
4 #s1.add(5) #更新一个值
5 #s1.union(s2) #不更新
6 s1
7 >>>{2, 3, 4, 5, 6}
可以看出:集合为可变类型。
1 s = frozenset('hello') #不可变集合
2 s.add(1)
3 >>>AttributeError: 'frozenset' object has no attribute 'add'
2019-06-11 22:00:28