Python中set的功能介绍
Set的功能介绍
1.集合的两种函数(方法)
1. 集合的内置函数
交集
格式:x.__and__(y)等同于x&y
例如:s1 = {'a',1,}
s2 = {'b',1,}
s3 = {'b','d'}
print(s1.__and__(s2))
>>> {1}
print(s1.__and__(s3))
>>> set()
返回值:set
#y只能是集合,当两个集合没有交集时,返回值为空集合。
判断是否是包含关系
格式:x.__contains__(y)等同于y in x
例如:s1 = {'a',1,}
print(s1.__contains__(3))
>>> False
返回值:bool
#y可以是任意对象
判断两个集合是否相等
格式:x.__eq__(y)等同于x==y
例如:s1 = {'a',1,}
print(s1.__eq__({3,}))
>>> False
返回值:bool
判断集合1是否大于等于集合2
格式:x.__ge__(y)等同于x>=y
例如:s1 = {3,4,5}
print(s1.__ge__({3,4}))
>>> True
print(s1.__ge__({2}))
>>> False
返回值:bool
#y只能是集合,判断大小主要依据集合相同元素的个数。
访问属性
格式:x.__getattribute__(self,name)
返回值:tuple
判断集合1是否大于集合2
格式:x.__gt__(y)等同于x>y
例如:s1 = {3,4,5}
print(s1.__gt__({3,4}))
>>> True
print(s1.__gt__({2}))
>>> False
返回值:bool
#y只能是集合,判断大小主要依据集合相同元素的个数。
赋值交集
格式:x.__iand__(y)等同于x&=y
例如:s1 = {'a',3,}
s1.__iand__({3})
print(s1)
>>> {3}
返回值:None
构造方法
格式:x.__init__(set())
例如:s1 = {3,5,}
s1.__init__(set())
print(s1)
返回值:None
赋值或并集
格式:x.__ior__(y)等同于x|=y
例如:s1 = {'a','b',}
s1.__ior__({3})
print(s1)
>>> {'a','b',3}
返回值:None
赋值差集
格式:x.__isub__(y)等同于x-=y
例如:s1 = {'a','b',}
s1.__isub__({3,4})
print(s1)
>>> {'a','b'}
返回值:None
迭代器
格式:x.__iter__()等同于iter(x)
返回值:迭代器
赋值异或
格式:x.__ixor__(y)等同于x^=y
例如:s1 = {'a','b',2,}
s1.__ixor__({'a',2,3})
print(s1)
>>> {'b',3}
返回值:None
#去除两个集合的交集后再并集
判断集合1是否小于等于集合2
格式:x.__le__(y)等同于x<=y
例如:s1 = {3,4,5}
print(s1.__le__({3,4}))
>>> False
print(s1.__le__({2}))
>>> True
返回值:bool
#y只能是集合,判断大小主要依据集合相同元素的个数。
长度
格式:x.__len__()等同于len(x)
例如:s1 = {2,3,4,}
print(s1.__len__())
>>> 3
返回值:int
判断集合1是否小于集合2
格式:x.__lt__(y)等同于x<y
例如:s1 = {3,4,5}
print(s1.__lt__({3,4}))
>>> False
print(s1.__lt__({2}))
>>> True
返回值:bool
#y只能是集合,判断大小主要依据集合相同元素的个数。
判断两个集合是否不相等
格式:x.__ne__(y)等同于x!=y
例如:s1 = {2,3,4}
print(s1.__ne__({3,4,}))
>>> True
返回值:bool
创建一个空集合
格式:x.__new__(set)
例如:s1 = {2,3,}
print(s1.__new__(set))
>>> set()
返回值:set
并集
格式:x.__or__(y)等同于x|y
例如:s1 = {2,3,4}
print(s1.__or__({3,4,5}))
>>> {2,3,4,5}
返回值:set
右→左 交集
格式:x.__rand__(y)等同于y&x
例如:s1 = {2,3,4}
print(s1.__rand__({3,4,5}))
>>> {3,4}
返回值:set
集合的状态信息
格式:x.__reduce__()
例如:s1 = {3,4,5,}
print(s1.__reduce__())
>>> (<class 'set'>, ([3, 4, 5],), None)
返回值:tuple
内置转换
格式:x.__repr__(self)
返回值:set
右→左 并集
格式:x.__ror__(y)等同于y|x
例如:s1 = {2,3,4}
print(s1.__ror__({3,4,5}))
>>> {2,3,4,5}
返回值:set
右→左 差集
格式:x.__rsub__(y)等同于y-x
例如:s1 = {2,3,4,}
print(s1.__rsub__({3,4,5}))
>>> {5}
返回值:set
右→左 并集减去交集
格式:x.__rxor__(y)等同于y^x
例如:s1 = {2,3,4,}
print(s1.__rxor__({3,4,5}))
>>> {2,5}
返回值:set
集合在内存中的大小,转换为字节进行计算
格式:x.__sizeof__()
例如:s1 = {3,4,}
s2 = {2,3,}
print(s1.__sizeof__())
>>> 200
print(s2.__sizeof__())
>>> 200
返回值:int
#集合长度和内容的不同,不影响集合在内存中的大小。
差集
格式:x.__sub__(y)等同于x-y
例如:s1 = {2,3,4,}
print(s1.__sub__({3,4,5}))
>>> {2}
返回值:set
并集减去交集
格式:x.__xor__(y)等同于x^y
例如:s1 = {2,3,4,}
print(s1.__xor__({3,4,5}))
>>> {2,5}
返回值:set
2. 集合的常用函数
集合添加元素
格式:x.add(y)
例如:s1 = {2,4,}
s1.add(3)
print(s1)
>>> {2,3,4}
返回值:None
#y是任意可以哈希的对象
清空集合
格式:x.clear()
例如:s1 = {2,3,}
s1.clear()
print(s1)
>>> set()
返回值:None
复制集合
格式:x.copy()
例如:s1 = {2,3,}
print(s1.copy())
>>> {2,3}
返回值:set
差集(生成新集合)
格式:x.difference(y)等同于x-y
例如:s1 = {1,2,3,}
print(s1.difference({2,3,4,}))
>>> {1}
返回值:set
差集(修改原集合)
格式:x.difference_update(y)
例如:s1 = {1,2,3,}
s1.difference_update({2,3,4,})
print(s1)
>>> {1}
返回值:None
删除元素(不报错)
格式:x.discard(y)
例如:s1 = {1,2,3,}
s1.discard(3)
print(s1)
>>> {1,2}
返回值:None
#y是任意可哈希化的对象,集合若无该元素时,也不会报错
交集(生成新集合)
格式:x.intersection(y)等同于x&y
例如:s1 = {1,2,3,}
print(s1.intersection({2,3,4}))
>>> {2,3}
返回值:set
交集(修改原集合)
格式:x.intersection_update(y)
例如:s1 = {1,2,3,}
s1.intersection_update({2,3,4,})
print(s1)
>>> {2,3}
返回值:None
判断两个集合是否没有相同元素
格式:x.isdisjoint(y)
例如:s1 = {1,2,3,}
print(s1.isdisjoint({4,5,}))
>>> True
返回值:bool
判断集合1是否包含集合2
格式:x.issuperset(y)
例如:s1 = {1,2,3,}
print(s1.issuperset({1,2,}))
>>> True
返回值:bool
随机删除一个元素
格式:x.pop()
例如:s1 = {1,2,3,}
print(s1.pop())
>>> 1 or 2 or 3
返回值:object(可哈希化的对象)
删除指定元素
格式:x.remove(y)
例如:s1 = {1,2,3,}
s1.remove(2)
print(s1)
>>> {1,3}
返回值:None
并集减去交集(生成新集合)
格式:x.symmetric_difference(y)等同于x^y
例如:s1 = {1,2,3,}
print(s1.symmetric_difference({2,3,4,}))
>>> {1,4}
返回值:set
并集减去交集(修改原集合)
格式:x.symmetric_difference_update(y)
例如:s1 = {1,2,3,}
s1.symmetric_difference_update({2,3,4,})
print(s1)
>>> {1,4}
返回值:None
并集(生成新集合)
格式:x.union(y)等同于x|y
例如:s1 = {1,2,3,}
print(s1.union([4,5,]))
>>> {1,2,3,4,5}
返回值:set
#y是可迭代的对象,主要为列表,元祖,字典和集合。
并集(修改原集合)
格式:x.update(y)
例如:s1 = {1,2,3,}
s1.update((4,5,))
print(s1)
>>> {1,2,3,4,5}
返回值:None
#y是可迭代的对象,主要为列表,元祖,字典和集合。
2.集合的操作
1. 集合的基础操作
长度
格式:len(set)
返回值:int
转换为集合
格式:set(object)
返回值:set
#object只能是可哈希的对象
2. 集合遍历操作
使用for...in 遍历集合
格式:for variable in set:
使用variable
例如:se1 = {1,'a','b',}
for i in se1:
print(i)
>>> 1
>>> 'a'
>>> 'b'
集合内等长元祖的遍历
格式:for variable1,variable2 in set:
使用variable1,variable2
例如:se1 = {(1,3,),(4,6,),(7,9,),}
for i,j in se1:
print(i,j)
>>> 1 3
>>> 4 6
>>> 7 9
注:方法2只能遍历同等长度的二级集合,由于集合内的元素不能是列表、字典和集合,因此只能是元祖。
3. 集合的推导式
简单的集合推导式
格式:{variable for variable in set}
例如:se1 = {1,'a','b',}
print({i for in se1})
>>> {1,'a','b',}
返回值:set
#遍历集合生成一个新集合
稍作修改的集合推导式
格式:{variable*3 for variable in set}
例如:se1 = {1,'a','b',}
print({i*3 for i in se1})
>>> {3,'aaa','bbb'}
返回值:set
带判断的集合推导式
格式:{variable+'x' for variable in set if 条件表达式}
例如:se1 = {1,'a','b',}
print({i+'x' for i in se1 if i != 1})
>>> {'ax','bx'}
返回值:set
多个集合推导式
格式:{variable1+variable2 for variable1 in se1 for variable2 in se2}
例如:se1 = {'a','b',}
se2 = {'c','d',}
print({i+j for i in se1 for j in se2})
>>> {'bc', 'ad', 'ac', 'bd'}
返回值:set
带判断的多个集合推导式
格式:{variable1+variable2 for variable1 in se1 for variable2 in se2 if 条件表达式}
例如:se1 = {'a','b','c'}
se2 = {'a','d','e'}
print({i+j for i in se1 for j in se2 if i == j})
>>> {'aa'}
返回值:set
Python中set的功能介绍的更多相关文章
- Python中dict的功能介绍
Dict的功能介绍 1. 字典的两种函数(方法) 1. 字典的内置函数 包含关系 格式:x.__contains__(key)等同于key in x 例如:dic = {'ab':23,'cd':34 ...
- Python中tuple的功能介绍
Tuple的功能介绍 1. 元祖的两种方法 1. 元祖的内置方法 两个元祖的相加 格式:x.__add__(y)等同于x+y 例如:tu1 = (1,2,3,) print(tu1.__add__(( ...
- Python中list的功能介绍
List的功能介绍 1. 列表的两种方法 1. 列表的内置方法 列表的相加 格式:x.__add__(y)等同于x+y 例如:list1 = [1,2,3] print(list1.__add__([ ...
- python中multiprocessing.pool函数介绍_正在拉磨_新浪博客
python中multiprocessing.pool函数介绍_正在拉磨_新浪博客 python中multiprocessing.pool函数介绍 (2010-06-10 03:46:5 ...
- laravel框架中超实用的功能介绍
本篇文章给大家带来的内容是关于laravel框架中超实用的功能介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 让lumen的dd() dump()像laravel一样优雅 1 c ...
- Docker 中的网络功能介绍 外部访问容器 容器互联 配置 DNS
Docker 中的网络功能介绍 | Docker 从入门到实践 https://vuepress.mirror.docker-practice.com/network/ Docker 允许通过外部访问 ...
- python中int的功能简单介绍
Int的功能介绍 1. 绝对值 x.__abs__()等同于abs(x) 2. 加法 x.__add__(y)等同于x+y 3. 与运算 x.__and__(y)等同于x&y 4. 布尔运算 ...
- [转载]python中multiprocessing.pool函数介绍
原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...
- Python中关于函数的介绍
一.什么是函数 当我们在日常工作中编写代码时,有没有发现这种情况,写了一套代码,却发现里面有很多段代码出现了有规律的重复,这样就不符合一个合格程序员的标准了,一个合格的程序员编写的代码最重 ...
随机推荐
- JAVA_SE基础——52.匿名内部类
电信的电箱烧了,害我断了2天网,真拿命,耽误了 Java匿名内部类的总结: 没有名字的内部类.就是内部类的简化形式.一般只用一次就可以用这种形式.匿名内部类其实就是一个匿名子类对象.想要定义匿名内部类 ...
- SpringBoot入门:新一代Java模板引擎Thymeleaf(理论)
Spring Boot 提供了spring-boot-starter-web来为Web开发予以支持,spring-boot-starter-web为我们提供了嵌入的Tomcat以及SpringMVC的 ...
- 启动Eclipse时An internal error occurred during: "Initializing Java Tooling".错误
解决方法一 重置窗口布局: windows > perspective > reset perspective 解决方法二: 如果上述方法不好使,采用下面的这种方法: 删除workspac ...
- RTSP连接中断重连的问题
最近在调查的一个问题. 起因是我司的一款数据链产品,15km数字图传,测试时发现视频画面经常会出现马赛克或卡顿. 图传设置了10Mbps速率,而视频码流是4Mbps,按道理不应该出现这种问题. 经过几 ...
- spring cloud zipkin sleuth与spring boot aop结合后,启动慢
问题描述: 引入了spring cloud的监控starter,间接引入jooq. 又引入了 spring-boot-starter-web,所以间接引入aop. 参考下面资料后:https://gi ...
- 【笔记】css 自定义select 元素的箭头样式
原文链接:https://www.imooc.com/qadetail/187585?t=281881 最近项目需要自定义select 元素的样式,搜索了一下发现了通过设置select 元素 css ...
- 谈谈spring-boot不同包结构下,同样的类名冲突导致服务启动失败解决方案
项目背景: 某日,有需求要在三天的时间内完成两个大项目的项目合并,因为之前两个项目的包结构和类名都很多相同,于是开始考虑使用加一级包进行隔离,类似于这种结构 但是在启动的过程中,抛出来这样的异常: C ...
- [论文阅读] ImageNet Classification with Deep Convolutional Neural Networks(传说中的AlexNet)
这篇文章使用的AlexNet网络,在2012年的ImageNet(ILSVRC-2012)竞赛中获得第一名,top-5的测试误差为15.3%,相比于第二名26.2%的误差降低了不少. 本文的创新点: ...
- 【转】Linux下统计当前文件夹下的文件个数、目录个数
1) 统计当前文件夹下文件的个数 复制代码代码如下: ls -l |grep "^-"|wc -l 2) 统计当前文件夹下目录的个数 复制代码代码如下: ls -l |grep & ...
- 如何在jenkins的maven项目中,用mvn命令行指定findbugs的黑名单规则文件
一:问题背景 最近在研究jenkins的过程中,针对maven项目,打算添加findbugs进行静态检查,但我不太想在项目的pom中进行修改,最好可以只修改jenkins的job配置,即配置外部化. ...