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