集合

集合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}