1. 遗漏知识点
深、浅拷贝: http://www.cnblogs.com/yuanchenqi/articles/5782764.html
a=b:
浅拷贝:
深拷贝
集合(set)
集合的定义和应用
集合是一个无序的、不重复的数据组合,它的主要作用如下:
-
-
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
- 集合对象是一组无序排列的可哈希(python中不可变的对象都是可哈希的)的值:集合成员可以做字典的键
- 但集合本身是不可哈希的,不能用作字典的键
-
注:因为集合是无序的,所以只能通过迭代器或for循环取出其中的值
有关集合的一些操作(增删改查)
1.创建集合:可变集合set()和不可变集合frozenset()
2.访问集合:由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。
s1=set('hello') s2=set(['hello',1,2]) print('h' in s1) print('h' in s2) True False
3. 更新集合:
可使用以下内建方法来更新:
s.add() #添加一个元素
s.update() #添加多个元素
s.remove() #删除指定元素
s.pop() #随机删除某一元素
s.clear() #清空集合
注意只有可变集合才能更新:
1 a=set([1,2,3,'hello']) 2 print(type(a)) 3 a.add('uu') 4 a.add('u') 5 print(a) 6 结果:{1, 2, 3, 'u', 'hello', 'uu'}
1 a=set([1,2,3,'hello']) 2 print(type(a)) 3 a.update('HO') 4 a.update('MM') 5 a.update([1,'MM']) 6 print(a) 7 结果:{1, 2, 3, 'hello', 'H', 'MM', 'O', 'M'}
4. 删除集合
del
集合关系测试
1 in ,not in
2 集合等价与不等价(==, !=)
3 子集(a<b)、超集(b>a)
子集(issubset) 超集(issuperset)
1 print(set('venus')==set('venusnusnus')) 2 True 3 print(set('venus')<set('venus')) 4 False 5 print(set('venus')<set('venusyo')) 6 True
4.并集(I)
并集(union)操作也就是数学中的并集合运算,联合符号有个等价的方法,union()。
5.交集(&)
交集(intersection)也就是数学中的交集运算,交集符号的等价方法是intersection()
1 print(set('abc') & set('bcd')) 2 print(set('abc') | set('bcd')) 3 结果:{'c', 'b'} 4 {'c', 'd', 'b', 'a'}
6.差集(-)
差集(difference)a-b=in a but not in b=a-a&b;b-a=in b but not in a=b-a&b
7.对称差集(^)
对称差集(symmetric_difference)a^b=a|b-a&b
1 a=[1,2,3] 2 b=[3,4,5] 3 print(set(a).union(set(b))) 4 print(set(a).intersection(set(b))) 5 print(set(a).difference(set(b))) 6 print(set(a).symmetric_difference(set(b))) 7 结果: 8 {1, 2, 3, 4, 5} 9 {3} 10 {1, 2} 11 {1, 2, 4, 5}
注:既可以使用符号也可以使用集合的方法