Python中的集合(Set)与数学中的集合概念类似, 是一种无序的, 元素不重复的集合. 集合中的元素可以是数字, 字符串, 元组等任意类型.
在形式上, 集合是一个由花括号{}包围的元素序列, 元素之间用逗号隔开.
集合中的每个元素都是唯一的, 不能重复.
创建集合
Python有两种创建集合的方式:
1.直接使用花括号{}创建集合:
在Python中,可以像创建列表,元组和字典一样,直接使用花括号{}创建集合.
set_name={element1,element2,element3,...,elementN}
在创建集合时, 如果输入了重复的元素,则只会保留一个.
2.使用set()函数创建集合:
set()函数可以将一个序列或迭代器转换为集合.
set_name=set(iteration)
- set_name: 要创建的集合的名称.
- iteration: 一个序列或迭代器, 用于创建集合. 可以是字符串, 如果是字符串, 则每个字符都是一个元素且不重复.
创建空集合只能用set()函数,这是因为直接使用{}创建的集合是空字典.
集合解包
集合可以同时向多个变量赋值, 例如:
my_set = {10, 20, 30}
a, b, c = my_set
print(f"a: {a}, b: {b}, c: {c}")
输出:
a: 10, b: 20, c: 30 #但是不建议这么做, 因为这样会导致变量的顺序不确定.
向集合中添加和删除元素
向集合中添加元素
向集合中添加元素可以使用add()方法或update()方法.
1.add()方法:
add()方法可以向集合中添加一个元素.
set_name.add(element)
- set_name: 要添加元素的集合的名称.
- element: 要添加的元素.
2.update()方法:
update()方法可以向集合中添加多个元素.
set_name.update(iterable)
- set_name: 要添加元素的集合的名称.
- iterable: 一个序列或迭代器, 用于添加元素.
从集合中删除元素
从集合中删除元素可以使用remove()方法,discard()方法或pop()方法.
1.remove()方法:
remove()方法可以删除集合中指定元素. 如果指定的元素不存在, 则会引发KeyError异常.
set_name.remove(element)
2.discard()方法:
discard()方法可以删除集合中指定元素. 如果指定的元素不存在, 也不会引发异常.
set_name.discard(element)
3.pop()方法:
pop()方法可以随机删除集合中的一个元素, 并返回该元素. 如果集合为空, 则会引发KeyError异常.
set_name.pop()
也可以使用del语句删除整个集合或者使用集合对象的clear()方法清空集合.
集合运算
Python中的集合运算有以下几种:
1.并集(union):
使用union()方法可以求两个集合的并集.
set1.union(set2)
或者使用|运算符.
set1|set2
2.交集(intersection):
使用intersection()方法可以求两个集合的交集.
set1.intersection(set2)
或者使用&运算符.
set1&set2
使用intersection_update()方法可以更新集合, 使其只包含交集元素.
set1.intersection_update(set2)
其中的set2可以是多个集合, 也可以是空集合.
使用isdisjoint()方法可以判断两个集合是否有交集.
set1.isdisjoint(set2)
如果两个集合没有交集, 则返回True, 否则返回False.
3.并集(union):
使用union()方法可以求两个集合的并集.
set1.union(set2)
或者使用|运算符.
set1|set2
使用update()方法可以更新集合, 使其包含两个集合的并集.
set1.update(set2)
或者使用|=运算符.
set1|=set2
4.差集(difference):
使用difference()方法可以求两个集合的差集.
set1.difference(set2)
或者使用-运算符.
set1-set2
使用difference_update()方法可以更新集合, 使其只包含差集元素.
set1.difference_update(set2)
其中的set2可以是多个集合, 也可以是空集合.
5.对称差集(symmetric_difference):
使用symmetric_difference()方法可以求两个集合的对称差集(即两个集合中不同元素的集合).
set1.symmetric_difference(set2)
或者使用^运算符.
set1^set2
6.子集(subset):
使用issubset()方法可以判断一个集合是否是另一个集合的子集.
set1.issubset(set2)
如果set1是set2的子集, 则返回True, 否则返回False.
或者使用<=运算符.
set1<=set2
7.超集(superset):
使用issuperset()方法可以判断一个集合是否是另一个集合的超集(即另一个集合包含了该集合的全部元素).
如果set1是set2的超集, 则返回True, 否则返回False.
set1.issuperset(set2)
或者使用>=运算符.
set1>=set2
适用集合的基本函数操作
- len()函数: len()函数可以计算集合中元素的个数.
len(set_name)
- max()函数: max()函数可以计算集合中元素的最大值.
max(set_name)
- min()函数: min()函数可以计算集合中元素的最小值.
min(set_name)
- sum()函数: sum()函数可以计算集合中元素的和.
sum(set_name)
- any()函数: any()函数可以判断集合中是否有元素.
any(set_name)
- all()函数: all()函数可以判断集合中所有元素是否都为True.
all(set_name)
- sorted()函数: sorted()函数可以对集合进行排序.
sorted(set_name, reverse=False)#默认升序排序
- reversed()函数: reversed()函数可以反转集合.
reversed(set_name)