什么是集合:
1.集合是一个可变容器
2.集合内的数据对象都是唯一的(不能重复)
3.集合是无序的存储结构,集合内的数据没有先后关系
4.集合是可迭代对象
5.集合相当于是只有键没有值得字典(键就是集合中的数据)
6.集合内的元素是不可变的(所以元素不能是列表)
1. 创建集合
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
- 使用直接量创建集合(无法创建空集合)
>>> setA = {"狗子","猫咪","舞队"}
>>> type(setA)
<class 'set'>
- 使用构造函数创建集合 - set(iterable)
>>> setA = set([1,2,3])
>>> setA
{1, 2, 3}
2.集合的相关操作
2.1 添加元素
add(key)
将key添加到集合中,如果元素已存在,则不进行任何操作。无返回值。
>>> setA = {1,2,3}
>>> setA.add(4)
>>> setA
{1, 2, 3, 4}
update(iterable)
修改当前集合,也可以添加新元素到集合中。参数可以是列表,元组,字典等。无返回值。
>>> setA = set()
>>> setA.update([1,2,3,4])
>>> setA
{1, 2, 3, 4}
>>> setA.update([3,4,5,6])
>>> setA
{1, 2, 3, 4, 5, 6}
>>>
2.2 移除元素
remove(key)
将key从集合中移除,如果key不存在,则会发生错误。无返回值。
discard(key)
将key从集合中移除。无返回值。注意:如果要删除不存在的元素,不会发生错误。
pop()
用于随机删除一个元素。返回值 :返回被删除的元素.
2.3 清空集合
clear()
清空集合内所有的元素。无返回值。
2.4 复制一个集合
copy()
复制一个集合。返回值:返回已复制的集合对象
>>> setA
{3, 4, 'i', 'f', 's'}
>>> setB = setA.copy()
>>> setB
{3, 4, 'i', 'f', 's'}
3. 集合的运算
- 交集
&
>>> setB = {1,2,3,4,5,6,10}
>>> setA = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> setA & setB
{1, 2, 3, 4, 5, 6}
- 并集
|
>>> setB = {1,2,3,4,5,6,10}
>>> setA = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> setA | setB
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
- 补集
-
>>> setB = {1,2,3,4,5,6,10}
>>> setA = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>>> setA - setB #生成属于setA但不属于setB的所有的元素
{0, 8, 9, 7}
>>> setB - setA #生成属于setB但不属于setA的所有的元素
{10}
>>>
-
集合相等
setA == setB
返回False或True -
集合不等
setA != setB
返回False或True -
成员运算
in 和 not in
4. 可用于集合的内建函数
len(set)
: 集合内元素的个数
max(set)
: 最大值
min(set)
: 最小值
sum(set)
: 和
any(set)
: 任何一个元素为真,则返回真
all(set)
: 所有元素为真,则返回真
>>> setA = {0,1,2,3}
>>> any(setA)
True
>>> all(setA)
False
>>> sum(setA)
6