Python之set集合的相关介绍

发布时间:2023年12月22日

认识python中的set集合及其用法

python中,集合(set)是一个无序排列,可哈希,支持集合关系测试,不支持索引和切片操作,没有特定语法格式,只能通过工厂函数创建.集合里不会出现两个相同的元素,所以集合常用来对字符串或元组或列表中的元素进行去重操作。

生成一个集合可以使用如下语法:

生成集合语法1:

>>>?l1=[1,2,3,4,5,6]
>>>?s1=set(l1)
>>>?print(s1)
{1,?2,?3,?4,?5,?6}

在这里,使用工厂函数set创建集合,set的参数可以是一个列表,也可以是一个元组或字符串。

生成集合语法2:

>>>?s2={6,7,8,9,10}
>>>?print(s2)
{8,?9,?10,?6,?7}

生成集合语法3:

>>>?s3={i?for?i?in?range(10)}
>>>?print(s3)
{0,?1,?2,?3,?4,?5,?6,?7,?8,?9}

集合类型的方法和操作:

add

为集合增加一个元素,如果集合中本来已经存在这个元素对集合无影响
Add?an?element?to?a?set.
This?has?no?effect?if?the?element?is?already?present.
>>>?s1={1,2,3,4,5,6,7}
>>>?s1.add(8)
>>>?print(s1)
{1,?2,?3,?4,?5,?6,?7,?8}
>>>?s1.add(9)
>>>?print(s1)
{1,?2,?3,?4,?5,?6,?7,?8,?9}

clear

清空集合里所有的元素
Remove?all?elements?from?this?set.
>>>?s1={1,2,3,4,5,6,7}
>>>?s2={5,6,7,8,9}
>>>?s1.clear()
>>>?print(s1)
set()
>>>?s2.clear()
>>>?print(s2)
set()

copy

对集合进行浅拷贝(只复制元素,不复制内存地址)
Return?a?shallow?copy?of?a?set.
>>>?s1={1,2,3,4,5,6,7}
>>>?print(s1,id(s1))
{1,?2,?3,?4,?5,?6,?7}?140509859430472
>>>?s2=s1.copy()
>>>?print(s2,id(s2))
{1,?2,?3,?4,?5,?6,?7}?140509842716712

difference

求两个或多个集合的差集,并返回一个新集合
Return?the?difference?of?two?or?more?sets?as?a?new?set.
>>>?s1={1,2,3,4,5,6,7}
>>>?s2={5,6,7,8,9,10}
>>>?s1.difference(s2)
{1,?2,?3,?4}
>>>?s2.difference(s1)
{8,?9,?10}

difference_update

把两个集合的交集部分从集合中移除
Remove?all?elements?of?another?set?from?this?set.
>>>?s1={1,2,3,4,5,6,7}
>>>?s2={5,6,7,8,9,10}
>>>?s1.difference_update(s2)
>>>?print(s1)
{1,?2,?3,?4}
>>>?s1={1,2,3,4,5,6,7}
>>>?s2={5,6,7,8,9,10}
>>>?s2.difference_update(s1)
>>>?print(s2)
{8,?9,?10}

discard

从集合中移除一个元素,如果被移除的元素不在集合中,不会报错
Remove?an?element?from?a?set?if?it?is?a?member.
If?the?element?is?not?a?member,?do?nothing.
{1,?2,?3,?4,?5,?6,?7}
>>>?s1.discard(7)
>>>?print(s1)
{1,?2,?3,?4,?5,?6}
>>>?s1.discard(4)
>>>?print(s1)
{1,?2,?3,?5,?6}
>>>?print(s1)
{1,?2,?3,?5,?6}

intersection

求两个或多个集合中的交集
Return?the?intersection?of?two?sets?as?a?new?set.
>>>?s1={1,2,3,4,5,6,7}
>>>?s2={5,6,7,8,9,10}
>>>?s1.intersection(s2)
{5,?6,?7}
>>>?s2.intersection(s1)
{5,?6,?7}

intersection_update

把两个集合的交集做为新的集合
Update?a?set?with?the?intersection?of?itself?and?another.
>>>?s1={1,2,3,4,5,6,7}
>>>?s2={5,6,7,8,9,10}
>>>?s1.intersection_update(s2)
>>>?print(s1)
{5,?6,?7}
>>>?print(s2)
{5,?6,?7,?8,?9,?10}
>>>?s1={1,2,3,4,5,6,7}
>>>?s2={5,6,7,8,9,10}
>>>?s2.intersection_update(s1)
>>>?print(s2)
{5,?6,?7}
>>>?print(s1)
{1,?2,?3,?4,?5,?6,?7}

isdisjoint

两个集合没有交集则返回True
Return?True?if?two?sets?have?a?null?intersection.
>>>?s1={1,2,3,4,5,6,7}
>>>?s2={5,6,7,8,9,10}
>>>?s1.isdisjoint(s2)
False
>>>?s1={1,2,3,4}
>>>?s2={6,7,8,9}
>>>?s1.isdisjoint(s2)
True

issubset

如果本集合是参数集合的子集,返回True
Report?whether?another?set?contains?this?set.
>>>?s1={1,2,3,4}
>>>?s2={1,2,3,4,5,6,7}
>>>?s1.issubset(s2)
True
>>>?s2.issubset(s1)
False

issuperset

如果本集合是参数集合的超集,返回True
Report?whether?this?set?contains?another?set.
>>>?s1={1,2,3,4}
>>>?s2={1,2,3,4,5,6,7}
>>>?s1.issuperset(s2)
False
>>>?s2.issuperset(s1)
True

pop

从集合中移除一个元素,如果集合为空,则报错
Remove?and?return?an?arbitrary?set?element.
Raises?KeyError?if?the?set?is?empty.
>>>?s1={2,3,4,5}
>>>?s1.pop()
2
>>>?print(s1)
{3,?4,?5}
>>>?s1.pop()
3
>>>?s1.pop()
4
>>>?s1.pop()
5
>>>?s1.pop()
Traceback?(most?recent?call?last):
??File?"<stdin>",?line?1,?in?<module>
KeyError:?'pop?from?an?empty?set'

remove

移除集合中的一个元素,如果集合是空的,则报错
Remove?an?element?from?a?set;?it?must?be?a?member.??
If?the?element?is?not?a?member,?raise?a?KeyError.
>>>?s1={1,2,3,4,5,6}
>>>?s1.remove(4)
>>>?print(s1)
{1,?2,?3,?5,?6}
>>>?s1.remove(9)
Traceback?(most?recent?call?last):
??File?"<stdin>",?line?1,?in?<module>
KeyError:?9

symmetric_difference

返回两个集合的对称差集的集合
Return?the?symmetric?difference?of?two?sets?as?a?new?set.
>>>?s1={1,2,3,4}
>>>?s2={6,7,8,9}
>>>?s1.symmetric_difference(s2)
{1,?2,?3,?4,?6,?7,?8,?9}
>>>?s3={1,2,3,4,5,6}
>>>?s4={5,6,7,8,9,10}
>>>?s3.symmetric_difference(s4)
{1,?2,?3,?4,?7,?8,?9,?10}

symmetric_difference_update

与参数集合做对称差集,并返回给自身
Update?a?set?with?the?symmetric?difference?of?itself?and?another.
>>>?s1={1,2,3,4}
>>>?s2={6,7,8,9}
>>>?s2.symmetric_difference_update(s1)
>>>?print(s2)
{1,?2,?3,?4,?6,?7,?8,?9}
>>>?s3={1,2,3,4,5,6}
>>>?s4={5,6,7,8,9,10}
>>>?s3.symmetric_difference_update(s4)
>>>?print(s3)
{1,?2,?3,?4,?7,?8,?9,?10}

union

求两个或多个集合的并集
Return?the?union?of?sets?as?a?new?set.
>>>?s1={1,2,3,4,5,6}
>>>?s2={5,6,7,8,9}
>>>?s1.union(s2)
{1,?2,?3,?4,?5,?6,?7,?8,?9}
>>>?s3={1,2,3,4}
>>>?s4={6,7,8,9}
>>>?s3.union(s4)
{1,?2,?3,?4,?6,?7,?8,?9}

update

与另一个集合求并集,并返回给自身
Update?a?set?with?the?union?of?itself?and?others.
>>>?s3={1,2,3,4}
>>>?s4={6,7,8,9}
>>>?s3.update(s4)
>>>?print(s3)
{1,?2,?3,?4,?6,?7,?8,?9}
文章来源:https://blog.csdn.net/hakesashou/article/details/135140105
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。