集合
集合Set
是一个无序且元素唯一的数据结构,可用于存储不重复的元素,并且可以进行交集、并集、差集等常见的集合操作。
集合一旦创建后里面的内容是不能被修改的,所以列表等能被修改的数据结构对象不能作为集合的元素。
基本操作
创建集合
可以使用大括号 {}
创建集合,元素之间用逗号 ,
分隔, 或者也可以使用 set()
函数创建集合。
>>> s = {1,2,3,4,5}
>>> print(s)
{1, 2, 3, 4, 5}
>>> st = set()
>>> print(st)
set()
>>>
>>>
>>> {[1,2,3,4]}
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
{[1,2,3,4]}
TypeError: unhashable type: 'list'
对于空集合,在Python
中的表示为set()
,并不是{}
。
添加元素
名字 | 说明 |
---|---|
add | 向集合中添加新的元素 |
update | 更新集合,添加的元素来自其它的other 对象 |
add(elem)
add
函数用于向集合中添加新的元素,elem
必须是不可变的对象。
>>> s = {1,2,3,4,5}
>>> s.add(6)
>>> s.add((1,2,3))
>>> print(s)
{1, 2, 3, 4, 5, 6, (1, 2, 3)}
update(other)
update
函数可以更新集合,添加的元素来自其它的other
对象。
>>> s = {'A', 'B'}
>>> s.update('abcdefg')
>>> print(s)
{'c', 'a', 'f', 'B', 'A', 'd', 'g', 'e', 'b'}
移除元素
名字 | 说明 |
---|---|
remove | 移除一个元素,如果这个元素不在集合里,则报错 |
discard | 移除一个元素,如果这个元素不在集合里,不会报错 |
pop | 移除任意一个元素,并返回这个元素 |
remove(elem)/discard(elem)
remove
要求被移除的元素elem
必须在集合中,否则会报错。相反,discard
不会报错。
>>> s = {1, 2, 3, 4, 5}
>>> s.remove(1)
>>> print(s)
{2, 3, 4, 5}
>>> s.remove(7)
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
s.remove(7)
KeyError: 7
>>>
>>>
>>> s.discard(2)
>>> print(s)
{3, 4, 5}
>>> s.discard(7)
>>>
pop()
pop
随机移除集合中的任意一个元素。
>>> s = {'c', 'a', 'f', 'B', 'A', 'd', 'g', 'e', 'b'}
>>> s.pop()
'c'
>>> print(s)
{'a', 'f', 'B', 'A', 'd', 'g', 'e', 'b'}
集合运算
名字 | 说明 |
---|---|
union | 返回集合与另一个数据结构的并集 |
intersaction | 返回集合与另一个数据结构的交集 |
difference | 返回集合与另一个数据结构的差集 |
union(others)
union
返回一个新集合,其中包含来自原集合以及others
指定的所有集合中的元素,也就是数学中的并集。 这里在的others
必须为一个iterable
。
>>> s= {1,2,3,4}
>>> s1 = {4,5,6,7}
>>> s.union(s1)
{1, 2, 3, 4, 5, 6, 7}
>>> s.union(['a', 'b'])
{1, 2, 3, 4, 'a', 'b'}
intersection(others)
intersection
返回一个新集合,其中包含原集合以及 others 指定的所有集合中共有的元素,也就是数学中的交集。
>>> s= {1,2,3,4}
>>> s1 = {4,5,6,7}
>>> s.intersection(s1)
{4}
difference(others)
intersection
返回一个新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素,也就是数学中的差集。
>>> s= {1,2,3,4}
>>> s1 = {4,5,6,7}
>>> s.difference(s1)
{1, 2, 3}