python-集合类型set与frozenset(操作符、方法、内置函数)

目录

简介

创建

操作符

成员操作符(in、not in)

判断子集(<、<=、>、>=)

求交集(&)

求并集(|)

求差集(-)

求对称差(^)

方法

判断相交

判断子集

求交集

求并集

求差集

求对称差

以下是仅适用于set的方法

更新

添加

删除

内置函数

长度

求和

最值

参考


简介

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 3.7官方文档-set,frozenset

更多python相关内容:【python总结】python学习框架梳理

本人b站账号:lady_killer9

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

上一篇:makefile 目标:依赖文件写法


下一篇:JsonCpp第五课 Json::Value使用技巧