码迷,mamicode.com
首页 > 其他好文 > 详细

07. 集合

时间:2020-02-16 16:24:07      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:不可变类   set   cti   err   update   等价   自动   ror   rem   

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 "<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}

 

07. 集合

标签:不可变类   set   cti   err   update   等价   自动   ror   rem   

原文地址:https://www.cnblogs.com/juno3550/p/12317121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!