集合是无序的、不重复的数据集合,它自己是可变的,但里面的元素是不可变类型(这里要注意,即便是含有列表的元组也不能够,必须是彻底不可变类型)python
建立集合可使用大括号{}来建立,元素间用逗号分隔,可是不能用它来建立空集合,由于{}建立的是空字典。函数
如 set1 = {1,2,3}
也可使用set()函数来建立集合,其中的参数为可迭代对象便可(好比字符串、列表、元组、迭代器等),前提是元素中必须是不可变类型。code
i = 'abcdefg' a =set(i) print(type(a)) print(a) ---------- <class 'set'> {'b', 'a', 'f', 'd', 'g', 'e', 'c'}
add(elem)
能够向集合中添加新元素,若是该元素已存在则不作任何改变对象
s1 = {1,2,3} s1.add('qwe') print(s1) ---------- {1, 2, 3, 'qwe'}
update(*others)
可将其余可迭代对象(好比字符串、列表、元组)添加到集合中,自动删除重复元素rem
s1 = {1,2,3} it = [3,4,5] s1.update(it) print(s1) ---------- {1, 2, 3, 4, 5}
remove(elem)
将元素从集合中删除,若是该元素不存在则会报错。字符串
s1 = {1,2,3} s1.remove(2) print(s1) ---------- {1, 3}
discard(elem)
和remove同样能够将元素从集合中删除,区别是若是元素不存在则不会报错。it
s1 = {1,2,3} s1.discard(6) print(s1) ---------- {1, 2, 3}
pop()
从集合中随机删除一个元素,而且返回该元素,若是集合为空则会报错io
s1 = {1,2,3} a = s1.pop() print(s1) print(a) ---------- {2, 3} 1
clear()
用于清空集合。class
对于集合来说有几种运算方法:交集、并集、差集、反交集、子集、超集
下面用代码来详细说明每种方法的用法date
s1 = {1,2,3,4,5} s2 = {3,4,5,6,7} print('交集:',s1 & s2) #可用&或者intersection,输出一个新的集合,包含共同拥有的元素 print('交集:',s1.intersection(s2)) print('并集:',s1 | s2) #可用|或者union,输出一个新的集合,包含两个集合中全部的元素(去重) print('并集:',s1.union(s2)) print('差集:',s1 - s2) #可用 - 或者difference,输出一个新的集合,包含前一个集合中除去共有的元素 print('差集:',s1.difference(s2)) print('反交集:',s1 ^ s2) #可用^或者 symmetric_difference,输出一个新的集合,包含两个集合中除去共有的元素后剩余的全部元素 print('反交集:',s1.symmetric_difference(s2))
交集: {3, 4, 5} 交集: {3, 4, 5} 并集: {1, 2, 3, 4, 5, 6, 7} 并集: {1, 2, 3, 4, 5, 6, 7} 差集: {1, 2} 差集: {1, 2} 反交集: {1, 2, 6, 7} 反交集: {1, 2, 6, 7}
子集与超集,简单来说就是一个集合中的元素包含另外一个集合中全部的元素,则“大的”集合叫超集,“小的”叫子集
s1 = {1,2,3} s2 = {1,2,3,4,5} print(s1.issubset(s2)) #输出为True,s1是s2的子集 print(s2.issuperset(s1))#输出为True,s2是s1的超集 ---------- True True
另外,使用frozenset('集合名'),能够把集合变成不可变集合