starletkiss 2020-02-16
集合(set)是一个元素不可重复的无序的序列。
s = {1, "a", (1, 2)}>>> # 方式一
>>> {1, "a", "a", (1, 2)}
{1, ‘a‘, (1, 2)}
>>> # 方式二:使用set()函数
>>> set() # 创建空集合
set()
>>> set({1, 2, 3}) # 传入集合
{1, 2, 3}
>>> set((1, 2, 3)) # 传入元组
{1, 2, 3}
>>> set({1:2}) # 传入字典,仅返回键
{1}
>>> set([1, 2]) # 传入列表
{1, 2}
>>> set("abc") # 传入字符串
{‘c‘, ‘a‘, ‘b‘}
>>> set("www")
{‘w‘}>>> s
{1, 2, 3, 4}
>>> a = s.copy()
>>> a
{1, 2, 3, 4}
>>> s
{1, 2, 3, 4}
>>> id(a)
30777096
>>> id(s)
30776984add():s.add(x) 将对象x增加到集合s中,若已存在该元素,不进行任何操作。
update():s.update(x) 也可以增加元素,增加对象还可以是列表、元组、字典等(逐个拆解其元素增加到集合中),x可以为多个对象。
>>> s = {1, 2}
>>> s.add(3)
>>> s
{1, 2, 3}
>>> s.add((4, 5)) # 添加一个元组作为元素
>>> s
{(4, 5), 1, 2, 3}
>>> s.update([6, 7]) # 拆解列表元素并添加
>>> s
{1, 2, 3, 6, 7, (4, 5)}
>>> s.add([6, 7]) # add()无法添加可变类型
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: ‘list‘
>>> s.update({11:10}) # 仅添加键
>>> s
{1, 2, 3, 6, 7, 11, (4, 5)}
>>> s.update((4, 5)) # 拆解元组元素并添加
>>> s
{1, 2, 3, 4, 5, 6, 7, 11, (4, 5)}
>>> s.update([20, 21], (22, 23)) # 传入多个对象
>>> s
{1, 2, 3, 4, 5, 6, 7, 11, (4, 5), 20, 21, 22, 23}remove():s.remove(x) 将元素x从集合s中删除,若元素x不存在则返回异常。
discard():类似于remove(),但若元素不存在并不会返回异常。
pop():随机删除一个元素,并返回该元素。
>>> s = {1, 2, 3, 4, 5}
>>> s.remove(5)
>>> s
{1, 2, 3, 4}
>>> s.remove(5) # 元素不存在,报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 5
>>> s.discard(5) # 元素不存在,但不报错
>>> s
{1, 2, 3, 4}
>>> s.pop()
1
>>> s.clear()
>>> s
set() >>> {1, 2} & {2, 3} # 交集。等价于 {1, 2}.intersection({2, 3})
{2}
>>> {1, 2} | {2, 3} # 并集。等价于 {1, 2}.union({2, 3})
{1, 2, 3}
>>> {1, 2} - {2, 3} # 左集合元素不存在于右集合中的元素
{1}
>>> {1, 2} ^ {2, 3} # 左右集合不同时存在的元素
{1, 3}