Python 集合

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还可以是列表、元组、字典等(逐个拆解其元素增加到集合中),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():随机删除一个元素,并返回该元素。
  • 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 "<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() 

 

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}

 

posted @ 2020-02-16 15:54  Juno3550  阅读(138)  评论(0编辑  收藏  举报