python中的集合
在python中,普通集合是可变数据类型
通过以下案例说明:
>>> s = {1, 2, 3, 4}
>>> id(s)
2108634636808
>>> s.add(5)
>>> s
{1, 2, 3, 4, 5}
>>> id(s)
2108634636808
在增加集合中的元素后,集合内存地址并没有改变,说明集合是可变数据类型
集合的重要特点是去重:
>>> s = {1, 2, 2, 3}
>>> s
{1, 2, 3}
集合的操作
常见之增删改:
>>> s = {1, 2, 3, 4, 5, 6}
>>> s.add(7) #增加
>>> s
{1, 2, 3, 4, 5, 6, 7}
>>> s.discard(8) #discard删除不存在的元素不会报错
>>> s
{1, 2, 3, 4, 5, 6, 7}
>>> s.discard(7)
>>> s
{1, 2, 3, 4, 5, 6}
>>> s.remove(8) #remove删除不存在的元素会报错
Traceback (most recent call last):
File "<pyshell#233>", line 1, in <module>
s.remove(8)
KeyError: 8
>>> s.remove(6)
>>> s
{1, 2, 3, 4, 5}
>>> s.pop()
1
>>> s
{2, 3, 4, 5}
>>> s.update({1,2,3}) #批量增加并自动去重
>>> s
{1, 2, 3, 4, 5}
>>> s.clear() #清空集合元素
>>> s
set()
#集合没有查询功能
集合的重要功能,关系测试:
>>> s1 = {1, 2, 3, 4}
>>> s2 = {2, 4, 5, 9}
#s1中有而s2中没有的
>>> s1 - s2
{1, 3}
>>> s1.difference(s2)
{1, 3}
#S1和s2的并集
>>> s1 | s2
{1, 2, 3, 4, 5, 9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 9}
#S1和s2的交集
>>> s1 & s2
{2, 4}
>>> s1.intersection(s2)
{2, 4}
#s1和s2的对称差集(并集-交集):
>>> s1.symmetric_difference(s2)
{1, 3, 5, 9}
#将s1-s2结果赋给s1
>>> s1.difference_update(s2)
>>> s1
{1, 3}
#将s1,s2的交集赋给s1
>>> s1 = {1, 2, 3, 4}
>>> s2 = {2, 4, 5, 9}
>>> s1.intersection_update(s2)
>>> s1
{2, 4}
#将s1,s2的对称差集赋给s1
>>> s1 = {1, 2, 3, 4}
>>> s2 = {2, 4, 5, 9}
>>> s1.symmetric_difference_update(s2)
>>> s1
{1, 3, 5, 9}
集合的关系判断
>>> s1 = {1, 2}
>>> s2 = {1, 2, 3}
>>> s1.issubset(s2) #A是否是B的子集
True
>>> s2.issuperset(s1) #A是否是B的父级
True
>>> s1 <= s2 #简写形式
True
>>> s1.isdisjoint(s2) #判断A和B是否不相交
False
下面简单认识一下不可变集合----frozenset:
>>> s = {1, 2, 3, 4}
>>> s1 = frozenset(s)
>>> s1
frozenset({1, 2, 3, 4})
通过frozenset函数将集合变成不可变集合,显然不可变集合就没了上面普通集合的增删操作,而仅仅保留关系测试和关系判断的操作,使用方法同上。
python中的集合的更多相关文章
- python 中的集合set
python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或 ...
- Python中的集合类型分类和集合类型操作符解析
集合类型 数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素(set elements). Python把这个概念引入到它的集合类型对象里.集合对象是一组无 ...
- python学习之【第七篇】:Python中的集合及其所具有的方法
1.前言 python中的集合set与列表类似,它们最大的区别是集合内不允许出现重复元素,如果在定义时包含重复元素,会自动去重. 集合是无序的,集合中的元素必须是不可变类型.集合可以作为字典的key. ...
- 14.python中的集合
什么是集合?正如其字面的意思,一堆东西集中合并到一起.乍一听貌似和容器没什么差别,嗯,好吧,集合也算是一种容器. 在学习这个容器有什么不同之前,先看看集合是如何创建的: a = set() #可变集合 ...
- 8、python中的集合
集合是python中无序.可变的数据结构.集合与字典类似,集合中的元素必须是可哈希的(等同于字典中的键),也就是说集合中的元素是唯一.不可变的数据类型.这里前面说集合可变,后面又说集合中的元素不可变是 ...
- python中的集合、元组和布尔
#元组,元组跟列表一样,只不过列表可读可写,而元组一般用来只读,不修改#python中不允许修改元组的数据,也包括不能删除其中的元素. t1 = ('a','b','c','d','s','a') & ...
- Python 中的集合 --set
前言 在Python中,我们用[]来表示列表list,用()来表示元组tuple,那{}呢?{}不光可用来定义字典dict,还可以用来表示集合set. 集合 set 集合(set)是一个无序的不重复元 ...
- python 中的集合(set) 详解
在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种. 创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方 ...
- python中set集合
一.set集合的特性 访问速度快 天生解决重复问题 二.set变量申明 s1 = set() s2 = set([1,2,3]) 备注:第二种方式在set类中直接传入一个序列. 三.set类中方法大全 ...
随机推荐
- Selenium之动作链(ActionChains)
用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件——ActionChains se ...
- 为什么PPIO要设计支付代理节点?
PPIO是我和姚欣发起的去中心化存储项目(https://pp.io),这是为开发者提供的存储和分发网络平台,使得比云存储更廉价,更高速,更隐私. 我在设计PPIO的时候,设计了一个商业角色——支 ...
- 2018.7.3 lnmp一键安装包无人值守版本 php7.2 + nginx1.14.0 + mariadb5.5 + centos7.1(1503) 环境搭建 + Thinkphp5.1.7 配置
给自己练习用的,整个过程追求一个简单粗暴,没有配置虚拟主机,现在记录一下过程. 1. 进入到lnmp解压缩后的文件夹conf/rewrite,把thinkphp.conf复制一份到/usr/local ...
- android 版本号大小比较
https://www.jianshu.com/p/ee1990270ee1 网上找了很多方法都不太靠谱,有问题,自己改了改,亲试可以 大家都知道,版本号一般由以下几部分组成: 1. 主版本号 2. ...
- Galaxy2D Game Engine 4.2 开发版发布
Update: ◆删除Graph_GetRenderTarget()函数,添加Graph_CopyBackBuffer()/Graph_CopyRanderTarget()函数 ◆Graph_EndS ...
- hive 一次更新多个分区的数据
类似订单数据之类的表,因为有状态要更新,比如订单状态,物流状态之类的, 这样就需要同步很久之前的数据,目前我的订单表是更新前面100天的数据. hive中操作是先删除前面100个分区的数据,然后重新动 ...
- 微信公众号openid处理的一些笔记
每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同.如果公司有多个公众号,可以通过开放平台关联,这样同一用户,对同一个微信开放平台下的不同应用,unionid是相同 ...
- vue项目中icon图标的完美引入
第一步: 进入阿里矢量图标库并登录 地址:https://www.iconfont.cn 第二步: 选择项目需要的图标添加到库 第三步: 选完之后点击右上角的购物车,打开后点击添加到项目,没有就自己建 ...
- 【HDFS API编程】副本系数深度剖析
上一节我们使用Java API操作HDFS文件系统创建了文件a.txt并写入了hello hadoop(回顾:https://www.cnblogs.com/Liuyt-61/p/10739018.h ...
- 字符型转换为字符串ToString
字符型转换为字符串 // C 货币 2.5.ToString("C"); // ¥2.50 // D 10进制数 25.ToString("D5"); // 2 ...