集合


1.集合的创建和删除

(1)使用赋值语句创建集合

使用赋值运算符‘=’将一个集合赋值给一个变量即可创建一个集合变量。

例如:

socres = {89,99,80,78}
print(type(socres))#输出

(2)使用set()函数创建集合

使用set()函数可以将字符串,列表,元组,range,对象等可迭代对象转换成集合。如果原来的数据存在重复的元素,则在转换为集合后只保留一个。

例如:

set1 = set('college')
print(set1)#输出{'o', 'g', 'l', 'e', 'c'}

注意:创建一个空集合必须用set()创建而不是{},因为{}是用来创建一个空字典。

(3)使用frozenset()函数创建不可变集合

使用set()函数创建的集合是可变的,可以添加或删除元素;使用frozenset()函数创建的集合是不可变的,不能进行添加或删除元素的操作。frozenset()函数创建的集合可以作为字典的键,也可以作为其他集合的元素,而set()函数创建的集合不可以。

例如:

numbers_set = frozenset('one')
print(numbers_set)#输出frozenset({'o', 'n', 'e'})

2.访问集合元素

由于集合本身是无序的,也没有任何的键与集合元素对应,所以无法取指定的某个元素,只能用in,not in或循环白能力来访问或判断元素。

set4 = {'语文','数学','英语','物理'}
print('语文'in set4)#返回True
for i in set4:
  print(i,end='')#使用for循环遍历集合元素

3.添加集合元素

使用集合对象的add()方法可以向集合中添加一个元素,如果该元素已存在则忽略该操作;使用update()方法可以向集合中添加另外一个集合中的多个元素,并自动去除重复元素。

例如:

set4 = {'语文','数学','英语','物理'}
set4.add('化学')#使用add()方法添加一个元素
set4.add('英语')#元素存在忽略该操作,不会抛出异常

4.删除集合元素

(1)remove()方法删除元素时,如果元素不存在,会抛出异常。

例如:

set4 = {'语文','数学','英语','物理'}
set4.remove('化学')#元素不存在,抛出异常
set4.remove('英语')#删除元素物理

(2)discard()方法

使用集合对象的discard()方法删除集合元素,如果元素不存在则忽略此操作,不会抛出异常。

例如:

set4 = {'语文','数学','英语','物理'}
set4.discard('英语')#删除元素英语

(3)pop()方法

使用集合对象的pop()方法随机删除集合中任意一个元素并返回该元素。

set4 = {'语文','数学','英语','物理'}
set4.pop()#随机删除并返回一个元素
print(set4.pop())

(4)clear()方法

使用集合对象的clear()方法删除集合的所有元素。

5.集合运算

集合还支持典型的数学集合运算并,交,差等,可用相应的操作符和方法实现。

(1)并集

两个集合A,B的集合时A,B集合的所有元素构成的集合。使用操作符‘|’执行并集操作,也可以使用union()方法实现。例如:

a_set = set([1,2,3,4,5])
b_set = set([3,4,5,6,7])
a_set|b_set#使用运算符'|'实现并操作
a_set.union(b_set)#使用union
#会去重

(2)交集

两个集合A,B的交集是含有所有既属于A又属于B的元素的集合。使用‘&’操作符执行交集操作,也可使用intersection()方法实现。

a_set&b_set
a_set.intersection(b_set)

(3)差集

集合A与B的差集是所有属于A且不属于B的元素构成的集合。使用操作符‘-’执行差集操作,也可使用difference()方法实现。例如:

a_set-b_set#使用运算符'-'实现差操作
a_set.difference(b_set)#使用difference()方法实现差操作
b_set.difference(b_set)#一个集合和本身的差集为空集

(4)对称差集

两个集合的对称差集是只属于其中一个集合而不属于另一个集合的元素,即两个集合的相异元素构成的集合。使用’^‘操作符执行差集操作,也可使用symmetric_difference()方法实现。例如:

a_set^b_set
b_set.symmetric_difference(a_set)

(5)集合的比较

判断超集与真超集

如果集合B中的元素都是A的元素,且A不等于B,则A是B的真超级

b_set>a_set#判断真超集

如果集合B中的元素都是A的元素,则A是B的超集

b_set>=a_set#判断超集

注意:关系运算符’==‘,只需要判断两个集合中的元素是否一致,与顺序无关。关系运算符’>,>=,<,<=‘作用于集合时,表示集合之间的包含关系,而不是比较集合中元素的大小关系。

6.集合推导式

集合推导式

集合推导式与列表推导式类似,唯一的区别是它使用大括号’{}‘,使用集合推导式可以快速创建特定集合。例如:

squard_set = {x**2 for x in [1,2,3,4]}#利用集合推导式创建特定集合