首页 > 编程语言 >python中的集合

python中的集合

时间:2022-11-23 16:12:50浏览次数:39  
标签:set python 元素 update 差集 others 集合

集合,简称集。由任意个元素构成的集体。高级语言都实现了这个非常重要的数据结构类型。

Python中,它是可变的、无序的、不重复的元素的集合

set() -> new empty set object

set(iterable) -> new set object

元素性质

去重:在集合中,所有元素必须相异

无序:因为无序,所以不可索引

可哈希:Python集合中的元素必须可以hash,即元素都可以使用内建函数hash

​ 目前学过不可hash的类型有:list、set、bytearray

可迭代:set中虽然元素不一样,但元素都可以迭代出来

增加

add(elem)

​ 增加一个元素到set中

​ 如果元素存在,什么都不做

update(*others)

​ 合并其他元素到set集合中来

​ 参数others必须是可迭代对象

​ 就地修改

s = set()
s.add(1)
s.update((1,2,3), [2,3,4])

删除

remove(elem)

​ 从set中移除一个元素

​ 元素不存在,抛出KeyError异常.

discard(elem)

​ 从set中移除一个元素

​ 元素不存在,什么都不做

pop() -> item

​ 移除并返回任意的元素。为什么是任意元素?

​ 空集返回KeyError异常

clear()

​ 移除所有元素

修改

集合类型没有修改。因为元素唯一。如果元素能够加入到集合中,说明它和别的元素不一样。

所谓修改,其实就是把当前元素改成一个完全不同的元素,就是删除加入新元素

遍历

只要是容器,都可以遍历元素。但是效率都是O(n)

成员运算符in

print(10 in [1, 2, 3])
False
print(10 in {1, 2, 3})
False
效率非常高

可哈希

数值型int、float、complex

布尔型True、False

字符串string、bytes

tuple

None

以上都是不可变类型,都是可哈希类型,hashable

set的元素必须是可hash的

集合概念

全集

​ 所有元素的集合。例如实数集,所有实数组成的集合就是全集

子集subset和超集superset

​ 一个集合A所有元素都在另一个集合B内,A是B的子集,B是A的超集

真子集和真超集

​ A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集

并集:多个集合合并的结果

交集:多个集合的公共部分

差集:集合中除去和其他集合公共部分

并集

将两个集合A和B的所有的元素合并到一起,组成的集合称作集合A与集合B的并集

union(*others)返回和多个集合合并后的新的集合

|运算符重载,等同union

update(*others)和多个集合合并,就地修改

|=等同update,修改的是左边的集合

交集

集合A和B,由所有属于A且属于B的元素组成的集合

intersection(*others)返回和多个集合的交集

&等同intersection

intersection_update(*others)获取和多个集合的交集,并就地修改

&=等同intersection_update,修改的左边的集合

差集

集合A和B,由所有属于A且不属于B的元素组成的集合

difference(*others)返回和多个集合的差集

-等同difference

difference_update(*others)获取和多个集合的差集并就地修改

-=等同difference_update

对称差集

集合a和b,由所有不属于A和B的交集元素组成的集合,记作(a-b)∪(b-a)

symmetric_differece(other)返回和另一个集合的对称差集

^等同symmetric_differece

symmetric_differece_update(other)获取和另一个集合的对称差集并就地修改

^=等同symmetric_differece_update

其它集合运算

issubset(other)、<=判断当前集合是否是另一个集合的子集

set1 < set2判断set1是否是set2的真子集

issuperset(other)、>=判断当前集合是否是other的超集

set1 > set2判断set1是否是set2的真超集

isdisjoint(other)当前集合和另一个集合没有交集,没有交集,返回True

标签:set,python,元素,update,差集,others,集合
From: https://www.cnblogs.com/guangdelw/p/16918593.html

相关文章

  • 字符编码与配置文件、数据库存储引擎、创建表的完整语法、字段类型之整型、严格模式、
    字符编码与配置文件1.\s查看MySQL相关信息 当前用户、版本、编码、端口号MySQL5.6及之前的版本编码需要人为统一之后的版本已经全部默认统一如果想要永久修改编码配......
  • python中利用pipreqs查询并安装项目所依赖的所有包
    pipreqs的安装pipinstallpipreqs-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com在terminal中,如要查看test文件夹下脚本所依赖包,则输入如下命令:pi......
  • Python-import xx 和 from xx import xx 的区别
    1.importxx:导入模块,在使用的时候需要“模块.函数”来使用例如:1importmath2math.sqr(5)  2.fromxximportxx和fromxximport*这两个本质没有区......
  • 安装Python后你的电脑多了哪些东西?
    Python安装完成之后,我们的计算机都多出了哪些东西?我们在计算机搜索框中搜索“python”,会显示出python相关的程序。可以看到,我们的计算机会多出4个应用程序,如下:  接......
  • Python中的切片
    线性结构特征​ 可迭代for...in​ 有长度,通过len(x)获取,容器​ 通过整数下标可以访问元素。正索引、负索引​ 可以切片切片sequence[start:stop]sequence......
  • Python中的元组 Tuple
    一个有序的元素组成的集合使用小括号()表示元组是不可变对象新建t1=()#空元组t2=(1,)#必须有这个逗号t3=(1,)*5t4=(1,2,3)t5=1,'a't6=(......
  • Python画桑基图
    pipinstallpyechartspipinstallsnapshot-seleniumpipinstallsnapshot-phantomjs基于Python利用桑基图(Sankeydiagram)表示转移矩阵(土地利用)https://pyecharts.org......
  • Python爬虫如何实现多线程异步
    如果自己的电脑配置高操作系统可以多任务运行的,应该首先要考虑单核CPU是怎么执行多任务的,操作系统会让各个任务交替执行。例如:任务1执行0.02秒,切换到任务2,任务2执行0.02秒,再......
  • 通过Python实现MySQL和PG数据比对
    生产上,有个需要从MySQL异构复制数据到PG中的需求。数据同步组件用的是go-mysql-postgres(两位前同事基于社区开源的go-mysql-elasticsearch上做的PG功能补丁)。目前测试环境......
  • 集合嵌套
    集合嵌套map里面嵌套listMap<String,List<String>>map=newHashMap<>(16);List<String>cityList=newArrayList<>(10);cityList.add("南昌");cityList.add("赣......