目录
简介
set 对象是由具有唯一性的可哈希对象所组成的无序多项集。 常见的用途包括成员检测、从序列中去除重复项以及数学中的集合类计算,例如交集、并集、差集与对称差集等等。frozenset无法进行更新、添加、删除。
创建
set([iterable])
如果有参数,返回可迭代对象形成的已去重集合。
>>> s = set([1,2,3,4])
>>> s
{1, 2, 3, 4}
不支持索引、切片等。
操作符
成员操作符(in、not in)
>>> 1 in s
True
判断子集(<、<=、>、>=)
set <= other
检测是否集合中的每个元素都在 other 之中。
set < other
检测集合是否为 other 的真子集,即 set <= other and set != other
。
>>> ss = set([1,2,3,4,5])
>>> s<ss
True
>>> s<=ss
True
>>> ss = set([1,2,3,4])
>>> s<ss
False
set >= other
检测是否 other 中的每个元素都在集合之中。
set > other
检测集合是否为 other 的真超集,即 set >= other and set != other
。
>>> s>ss
False
>>> s>=ss
True
>>> ss = ([1,2,3,4,5])
>>> s>ss>>> ss = set([1,2,3,4,5])
>>> s>ss
False
求交集(&)
set & other & ...
返回一个新集合,其中包含原集合以及 others 指定的所有集合*有的元素。
>>> s&ss
{1, 2, 3, 4}
求并集(|)
set | other | ...
返回一个新集合,其中包含来自原集合以及 others 指定的所有集合中的元素。
>>> s|ss
{1, 2, 3, 4, 5}
求差集(-)
set - other - ...
返回一个新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素。
>>> ss-s
{5}
求对称差(^)
set ^ other
返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者。
>>> s^ss
{5}
方法
判断相交
isdisjoint
(other)
如果集合中没有与 other 共有的元素则返回 True
。 当且仅当两个集合的交集为空集合时,两者为不相交集合,返回False。
>>> s.isdisjoint(ss)
False
>>> ss = set([7,8,9])
>>> s.isdisjoint(ss)
True
判断子集
issubset
(other)
和<=等价
>>> s.isdisjoint(ss)
True
>>> s.issubset(ss)
False
>>> ss = set([1,2,3,4])
>>> s.issubset(ss)
True
>>> ss = set([1,2,3,4,5])
>>> s.issubset(ss)
True
issuperset
(other)
和>=等价
>>> ss = set([1,2,3])
>>> s.issuperset(ss)
True
>>> ss = set([1,2,3,4])
>>> s.issuperset(ss)
True
>>> ss = set([1,2,3,4,5])
>>> s.issuperset(ss)
False
求交集
intersection
(*others)
等价于&
>>> s.intersection(ss)
{1, 2, 3, 4}
求并集
union
(*others)
等价于|
>>> s.union(ss)
{1, 2, 3, 4, 5}
求差集
difference
(*others)
等价于-
>>> s.difference(ss)
set()
>>> ss.difference(s)
{5}
求对称差
symmetric_difference
(other)
等价于^
>>> s.symmetric_difference(ss)
{5}
以下是仅适用于set的方法
更新
update
(*others)
set |= other | ...
更新集合,添加来自 others 中的所有元素。
>>> s.update(ss)
>>> s
{1, 2, 3, 4, 5}
intersection_update
(*others)
set &= other & ...
更新集合,只保留其中在所有 others 中也存在的元素。
>>> ss = set([2,3])
>>> s.intersection_update(ss)
>>> s
{2, 3}
difference_update
(*others)
set -= other | ...
更新集合,移除其中也存在于 others 中的元素。
>>> ss = set([1,3])
>>> s.difference_update(ss)
>>> s
{2}
symmetric_difference_update
(other)
set ^= other
更新集合,只保留存在于集合的一方而非共同存在的元素。
>>> s = set([1,2,3])
>>> ss = set([2,3,4])
>>> s.symmetric_difference_update(ss)
>>> s
{1, 4}
添加
add
(elem)
将元素 elem 添加到集合中。
>>> s.add(5)
>>> s
{1, 4, 5}
删除
remove
(elem)
从集合中移除元素 elem。 如果 elem 不存在于集合中则会引发KeyError。
>>> s.remove(4)
>>> s
{1, 5}>>> s.remove(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 4
为防止KeyError,可先使用成员操作符in。
discard
(elem)
如果元素 elem 存在于集合中则将其移除。
>>> s.discard(4)
>>> s.discard(5)
>>> s
{1}
pop
()
从集合中移除并返回任意一个元素。 如果集合为空则会引发 KeyError。
>>> s.pop()
1
>>> s.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'pop from an empty set'
为防止KeyError,可使用内置函数len判断长度是否为0。
clear
()
从集合中移除所有元素。
>>> s.clear()
>>> s
set()
内置函数
长度
len
>>> s = set([1,2,3,4,5])
>>> len(s)
5
求和
sum
>>> sum(s)
15
最值
>>> max(s)
5
>>> min(s)
1
参考
更多python相关内容:【python总结】python学习框架梳理
本人b站账号:lady_killer9
有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。