集合
创建集合方法:
-
num2 = {1,2,3,4,5} >>> type(num2) <class 'set'>
-
>>> set2 = set([1,2,3,4,5,5,4,3,2,1,'小甲鱼']) >>> set2 {'小甲鱼', 1, 2, 3, 4, 5}
访问集合中的值:
>>> for each in set2:
print(each)
小甲鱼
1
2
3
4
5
判断集合中的值:
>>> 6 in set2
False
>>> 5 in set2
True
不可变集合:
>>> num3 = frozenset([1,2,3,4,5])
>>> num3.add(8)
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
num3.add(8)
AttributeError: 'frozenset' object has no attribute 'add'
集合类型内建方法总结
集合(s).方法名 | 等价符号 | 方法说明 |
---|---|---|
s.issubset(t) | s <= t | 子集测试(允许不严格意义上的子集):s 中所有的元素都是 t 的成员 |
s < t | 子集测试(严格意义上):s != t 而且 s 中所有的元素都是 t 的成员 | |
s.issuperset(t) | s >= t | 超集测试(允许不严格意义上的超集):t 中所有的元素都是 s 的成员 |
s > t | 超集测试(严格意义上):s != t 而且 t 中所有的元素都是 s 的成员 | |
s.union(t) | s | t | 合并操作:s “或” t 中的元素 |
s.intersection(t) | s & t | 交集操作:s “与” t 中的元素 |
s.difference | s - t | 差分操作:在 s 中存在,在 t 中不存在的元素 |
s.symmetric_difference(t) | s ^ t | 对称差分操作:s “或” t 中的元素,但不是 s 和 t 共有的元素 |
s.copy() | 返回 s 的拷贝(浅复制) | |
以下方法仅适用于可变集合 | ||
s.update | s |= t | 将 t 中的元素添加到 s 中 |
s.intersection_update(t) | s &= t | 交集修改操作:s 中仅包括 s 和 t 中共有的成员 |
s.difference_update(t) | s -= t | 差修改操作:s 中包括仅属于 s 但不属于 t 的成员 |
s.symmetric_difference_update(t) | s ^= t | 对称差分修改操作:s 中包括仅属于 s 或仅属于 t 的成员 |
s.add(obj) | 加操作:将 obj 添加到 s | |
s.remove(obj) | 删除操作:将 obj 从 s 中删除,如果 s 中不存在 obj,将引发异常 | |
s.discard(obj) | 丢弃操作:将 obj 从 s 中删除,如果 s 中不存在 obj,也没事儿^_^ | |
s.pop() | 弹出操作:移除并返回 s 中的任意一个元素 | |
s.clear() | 清除操作:清除 s 中的所有元素 |
第27课课后作业
-
请问集合的唯一作用是什么?
集合元素的唯一性。
-
如果你希望创建的集合不变,应该怎么做?
frozenset([1,2,3,4,5])
-
请问如何确定一个集合里边有多少个元素?
>>> len(num3) 5
-
目测一下代码会打印什么内容?
>>> num_set = set([1,2,3,4,5]) >>> num_set[0]
会报错,因为集合无序。
-
请问
set1 = {[1,2]}
和set1 = set([1,2])
执行的结果是一样的吗?>>> set1= set([1,2]) >>> set1 {1, 2} >>> set2 = {[1,2]} Traceback (most recent call last): File "<pyshell#31>", line 1, in <module> set2 = {[1,2]} TypeError: unhashable type: 'list'
列表不是可哈希类型,列表可变。
集合和字典储存方式一样,地址一一对应且无序排列。
-
打开你的IDLE, 输入
set1 = {1,1.0}
,你会发现什么?>>> set1 = {1, 1.0} >>> set1 {1}
-
请问如何给集合添加和删除元素?
>>> set1 ={0,1,2,3,4,5,'小甲鱼','小鱿鱼'} >>> set1.add('小丑鱼') >>> set1 {0, 1, 2, 3, 4, 5, '小甲鱼', '小丑鱼', '小鱿鱼'} >>> set1.remove(1) >>> set1 {0, 2, 3, 4, 5, '小甲鱼', '小丑鱼', '小鱿鱼'}