1. 集合介绍
2. 集合的常用操作
3. 集合间的运算
1. 集合介绍
集合(set)是一个元素不可重复的无序的序列。
s = {1, "a", (1, 2)}
- 集合在创建时,会自动删除重复的元素。
- 可以使用花括号{}或set()函数创建集合。但注意若要创建空集合只能使用set(),因为{}默认创建的是空字典。
- 无法使用索引访问集合的元素。
- 集合的元素只能是不可变类型。
- 集合对象还支持union(联合),intersection(交),difference(差)、sysmmetric_difference(对称差集)等数学运算。
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'}
- copy():拷贝一个新的集合(新的内存地址)。
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 "", line 1, in 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():随机删除一个元素,并返回该元素。
- clear():清空集合所有的元素。
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 "", line 1, in 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()
3. 集合间的运算
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}