千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  技术干货  >  Python技术干货  > Python集合类型

Python集合类型

来源:千锋教育
发布时间:2023-11-06 18:07:18
分享

python目前有两种内置集合类型,set和frozenset。

Ⅰ、两者区别

set是可变的,没有哈希值,其内容可以使用add()和remove()这样的方法来改变,所以不能被用作字典的键或其他集合的元素。

frozenset是不可变的,并且为hashable,其内容在被创建后不能再改变,因此可以被用作字典的键或其他集合的元素。

Ⅱ、创建集合

两个类的构造器有着相同的作用方式:

classset([iterable])

classfrozenset([iterable])

返回一个新的set或frozenset对象,其元素来自于iterable。集合的元素必须为hashable。要表示由集合对象构成的集合,所有的内层集合必须为frozenset对象。如果未指定iterable,则将返回一个新的空集合。

除了可以使用set构造器,非空的set(不是frozenset)还可以通过将以逗号分隔的元素列表包含于花括号之内来创建,例如:

>>>a={'hello','python'}

>>>type(a)

当然如果想要建立一个空的集合,则必须用set构造器。

Ⅲ、无序多项集set

set对象是由具有唯一性的hashable对象所组成的无序多项集。常见的用途包括成员检测、从序列中去除重复项以及数学中的集合运算,例如交集、并集、差集与对称差集等等。

与其他多项集一样,集合也支持xinset,len(set)和forxinset。作为一种无序的多项集,集合并不记录元素位置和插入顺序。相应地,集合不支持索引、切片或其他序列类的操作。

Ⅳ、集合操作

set和frozenset的实例提供一下操作:

len(s)#返回集合s中的元素数量

xins#检测x是否为s中的成员

xnotins#检测x是否非s中的成员

isdisjoint(other)#如果集合中没有与other共有的元素则返回True

issubset(other)#等同于set<=other,检测集合是否为other子集

set

issuperset(other)#等同于set>=other,检测集合是否为other超集

set>other#检测集合是否为other真超集

#下面四种方法返回一个新集合

union(*others)#等同于set|other|...,并集

intersection(*others)#等同于set&other&...,交集

difference(*others)#等同于set-other-...,差集

symmetric_difference(other)#等同于set^other,补集

copy()#返回原集合的浅拷贝

set的实例与frozenset的实例之间基于它们的成员进行比较。例如set('abc')==frozenset('abc')返回True,set('abc')inset([frozenset('abc')])也一样。

可用于set而不能用于不可变的frozenset实例的操作:

#下面四种方法更新集合

update(*others)#等同于set|=other|...

intersection_update(*others)#等同于set&=other&...

difference_update(*others)#set-=other|...

symmetric_difference_update(other)#set^=other

add(elem)#添加elem元素到集合中

remove(elem)#从集合中移除元素elem

discard(elem)#如果元素elem存在集合中则将其移除

pop()#从集合中移除并返回任意一个元素

clear()#移除集合中所有元素

Note:issubset(),issuperset(),union(),intersection(),difference(),symmetric_difference(),update(),intersection_update(),difference_update()和symmetric_difference_update()方法会接受任意可迭代对象作为参数。

set('abc')&'cbs'#错误

set('abc').intersection('cbs')#正确

相比之下,它们所对应的运算符版本则要求其参数为集合。这就排除了容易出错的构造形式例如set('abc')&'cbs',而推荐可读性更强的set('abc').intersection('cbs')。

以上内容为大家介绍了Python集合类型,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • Python增强 Python自身的已有的一些功能可以随着标准库的使用而得到增强。1)文字处理Python的string类提供了对字符串进行处理的方法。更进一步,通过标准库中的re包,Python可以用正则表达式(re
  • Python自定义模块导入方法 Python模块是一个Python文件,以.py结尾,包括了Python对象定义和Python语句,能让Python代码段更有逻辑性、更好用、更易懂,既然Python模块有这么多好处,那么该如何引用P
  • 用Python+OpenCV实现自动扫雷 相信许多人很早就知道有扫雷这么一款经典的游(显卡测试)戏(软件),更是有不少人曾听说过中国雷圣,也是中国扫雷第一、世界综合排名第二的郭蔚嘉的顶顶大名。扫雷作为一款在Windows9x时代就已经诞生的经
  • python unittest控制用例的执行顺序 为什么要进行顺序控制呢?使用过testng的同学就知道,它相对于junit来说有更强大的功能,其中的一个功能就是依赖测试。什么是依赖测试呢?简单的说一下就是,A方法运行时,其中有个变量的取值是B方法的
  • Python使用装饰器在执行单元测试时配置环境 装饰器的定义是给一个对象动态加载功能,就像打游戏时给队友上buff一样。一直以来,我对装饰器用的不多,经常会用别的方式搞定,虽然代码丑一点,但也能用。这次遇到一个特别适合装饰器的应用场景,就是执行单元
  • Python的Unittest单元测试使用详解 PytheM是一个Python渗透测试框架。它只能在osnGNU/LinuxOS系统上运行。安装$sudoapt-getupdate$sudoapt-getinstalllibasound-devli