Python Set
Set
集合(Set
)由序列(或其他可迭代对象)构建的,元素不能重复,无序。
>>> {3, 5, 1, 1} # 元素不能重复,无序
{1, 3, 5}
创建集合
# Python 2.7
>>> set(range(10))
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# Python 3.5
>>> set(range(10))
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
集合间的运算
>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a.union(b) # 并集
{1, 2, 3, 4}
>>> a | b # 并集
{1, 2, 3, 4}
>>> a & b # 交集
{2, 3}
>>> a.intersection(b) # 交集
{2, 3}
>>> a.isdisjoint(b) # 如果 a b 两集合不相交,则返回True。
False
>>> c = a & b
>>> c.issubset(a) # c 是否属于 a 的一部分
True
>>> c <= a
True
>>> c.issuperset(a) # a 是否属于 c 的一部分
False
>>> c >= a
False
>>> a.difference(b) # a 存在,b 不存在的元素
{1}
>>> a - b
{1}
>>> a.symmetric_difference(b) # a, b 不同的部分
{1, 4}
>>> a ^ b
{1, 4}
>>>
集合的基本操作
添加,add
>>> a.add(5) # 添加
>>> a
{1, 2, 3, 5}
update
这里的操作同集合间的运算,将运算结果赋值给原 Set。
>>> a.update([5, 4], {"6": "7"}) # 也可以添加元素,且参数可以是列表,元组,字典等
>>> a
{1, 2, 3, 4, 5, '6'}
>>> a = {1, 2, 3}
>>> a |= {5, 4} # |= 操作需要是 Set 类型
>>> a
{1, 2, 3, 4, 5}
>>> a.intersection_update([1, 2, 3, 8]) # 更新集合,只保留交集。
>>> a
{1, 2, 3}
>>> a &= {1, 3, 4}
>>> a
{1, 3}
>>> a = {1, 2, 3}
>>> a.difference_update([1, 4]) # 更新集合,删除参数中存在的元素
>>> a
{2, 3}
>>> a -= {3, 5}
>>> a
{2}
>>> a = {1, 2, 3}
>>> a.symmetric_difference_update([1, 4]) # 更新集合,只保留不同时存在于两者中的元素。
>>> a
{2, 3, 4}
>>> a ^= {3, 5}
>>> a
{2, 4, 5}
删除,remove,discard,pop
>>> a.remove(5) # 删除
>>> a
{1, 2, 3, 4, '6'}
>>> a.remove(5) # 如果元素不存在,则会发生错误
Traceback (most recent call last):
File "<pyshell#79>", line 1, in <module>
a.remove(5)
KeyError: 5
# 还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。
>>> a.discard(4)
>>> a.discard(4)
>>> a
{1, 2, 3, '6'}
# 随机删除集合中的一个元素(在交互模式,pop 是删除集合的第一个元素)
>>> a.pop()
1
>>> a
{2, 3, '6'}
计算集合元素个数
>>> len(a)
3
清空集合
>>> a.clear()
>>> a
set()
判断元素是否在集合中存在
>>> a = {1, 2, 3}
>>> 2 in a
True
浅拷贝,copy()
>>> a.copy()
{1, 2, 3}
>>> a.copy() is a
False
>>> a.copy() == a
True
frozenset
集合是可变的,所以不能用作字典的键。集合中只能包含不可变值,也就是不能包含集合。
使用frozenset
类型,用于代表不可变的集合,这样也就可以用于字典的键。
>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a.add(b)
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
a.add(b)
TypeError: unhashable type: 'set'
>>> a.add(frozenset(b))
>>> a
{1, 2, 3, frozenset({2, 3, 4})}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com
文章标题:Python Set
文章字数:955
本文作者:Bin
发布时间:2019-01-25, 15:38:06
最后更新:2019-08-06, 00:07:35
原始链接:http://coolview.github.io/2019/01/25/Python/Python%20Set/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。