python之路12--之集合的所有操作
一、集合说明
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系。
二、集合的操作
1、创建集合的两种方法
set1 = set({1,2,3,4})
set2 = {1,2,3}
2、集合的增加操作
set1 = {'ouyang','qiyi','zhangsan','lisi','ermazi'}
set1.add('nvshen') #随机添加到集合里,集合是无序的
set1.update('abc') #迭代添加,将添加的元素拆分为最小元素添加,即添加了abc三个元素
3、集合的删除操作
set1.pop() #随机删除,有返回值(返回值为删除的内容) set1.remove("ouyang") #按元素删除,如果删除的元素不在集合里会报错 set1.clear() #清空集合 del set1 #删除整个集合,
4、集合查询操作
说明:因为集合是无序的,所以集合只能循环查询
for i in set1: print(i)
三、求集合的交集和并集
1、求交集(& 或者 intersection、即两个集合里都有的元素)
# set2 = {1,2,3,4,5} # set3 = {4,5,6,7,8} # set4 = set2 & set3 # print(set4) # print(set2.intersection(set3))
2、求并集(| 或者 union、将两个集合里重复的内容给去重)
set2 = {1,2,3,4,5}
set3 = {4,5,6,7,8}
print(set2 | set3)
print(set3.union(set2))
3、差集。(- 或者 difference、即set1里有的set2里没有的,如果反过来就是set2里有的,set1里没有的)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2) # {1, 2, 3}
print(set1.difference(set2)) # {1, 2, 3}
4、反交集。 (^ 或者 symmetric_difference、即两个集合里重复的内容去掉)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2) # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7,8}
5、子集与超集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6} #set2里的元素完全包含set1的元素,就可以说set1是set2的子集,set2是set1的超级
print(set1 < set2)
print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。
print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。
6、frozenset不可变集合,让集合变成不可变类型。
s = frozenset('barry') print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

浙公网安备 33010602011771号