python之路(四)-set集合
set集合 set是一个无序且不重复的元素集合
优点:访问速度快,解决重复问题
l1 = [1,2,34,5,6,7,4,3,3,]
s2 = set(l1) #可以以列表元祖等作为参数传进来,set集合会自动转换成元祖并去重
#输出结果:
{1, 2, 34, 4, 5, 6, 7, 3}
各种方法:add,clear,.....等等 add 合并集合
l1 = [1,2,34,5,6,7,4,3,3,]
l2 = [23,3,4,5,100,2,3]
s2 = set(l1) #自动转换并去重
s2.add(67)
print(s2)
cear
l1 = [1,2,34,5,6,7,4,3,3,]
l2 = [23,3,4,5,100,2,3]
s2 = set(l1) #自动转换并去重
s2.add(67)
s2.clear()
print(s2)
copy
l1 = [1,2,34,5,6,7,4,3,3,]
s2 = set(l1) #自动转换并去重
s3 = s2.copy() print(s3) #输出结果:
{1, 2, 34, 4, 5, 6, 7, 3}
difference 求差集
l1 = [1,2,34,5,6,7,4,3,3,]
s1 = set(l1) #自动转换并去重
s2 = set([12,3465,75,32,2])
s3 = s2.difference(s1) #循环s2里的元素跟s1比较,若不存在s1内就会打印
s4 = s1.difference(s2) #循环s1里的元素跟s2比较,若不存在s1内就会打印 print(s3)
print(s4) #输出结果:
{32, 3465, 75, 12}
{1, 34, 3, 4, 5, 6, 7}
difference_update 与difference的区别是它会更新原来的集合
l1 = [1,2,34,5,6,7,4,3,3,]
s1 = set(l1) #自动转换并去重
s2 = set([12,3465,75,32,2])
s2.difference_update(s1)
print(s2) #输出结果:
{32, 3465, 75, 12}
discard 参数为一个字符串或者一个数字,如果该参数在集合内,则删除,若不在,则没有任何操作
#清除的元素不存在,不采取任何操作
l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
s1 = set(l1) #自动转换并去重
s1.discard('abc')
print(s1)
#输出结果:
{1, 2, 34, 4, 5, 6, 7, 3, 'a', 'ab'} #参数存集合内,则清除该元素
l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
s1 = set(l1) #自动转换并去重
s1.discard('ab')
print(s1)
#输出结果:
{1, 2, 34, 4, 5, 6, 7, 3, 'a'}
intersection 取两个结合之间的交集
l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
s1 = set(l1) #自动转换并去重
s2 = set([1,2,23,3,3,5,2])
s3 = s2.intersection(s1)
print(s3)
#输出结果:
{1, 2, 3, 5}
intersection_update 功能与intersection一样,区别是它会更新原来的集合
l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
s1 = set(l1) #自动转换并去重
s2 = set([1,2,23,3,3,5,2])
s2.intersection_update(s1)
print(s2)
#输出结果
{1, 2, 3, 5}
isdisjoint 如果没有交集就返回True,反之则返回False
l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
s1 = set(l1) #自动转换并去重
s2 = set([1,2,23,3,3,5,2])
s3 = s2.isdisjoint(s1)
print(s3) #输出结果
False l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
s1 = set(l1) #自动转换并去重
s2 = set([111,222])
s3 = s2.isdisjoint(s1)
print(s3)
#输出结果
True
issubset 是否是子集,是则返回True,否则返回False
l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
s1 = set(l1) #自动转换并去重
s2 = set([111,222])
s3 = s2.issubset(s1)
print(s3)
#输出结果:
False
issuperset 是否是父集,是则返回True,否则返回False
l1 = [1,2,34,5,6,7,4,3,3,'a','ab']
s1 = set(l1) #自动转换并去重
s2 = set([111,222])
s3 = s2.issuperset(s1)
print(s3)
#输出结果:
False
pop 随意删除一个元素并返回
l1 = [1,2,34,5,6,7,4,3,3,'a','ab','ds']
s1 = set(l1) #自动转换并去重
s2 = s1.pop(2)
print(s2)
#输出结果
随意的结果
remove 删除一个指定的元素,不返回
l1 = ['a','ab','ds']
s1 = set(l1) #自动转换并去重
s1.remove('a')
print(s1) #输出结果
{'ab', 'ds'}
symmetric_difference 对称差值,指将两个集合合并后再求差集
l1 = ['a','ab','ds']
s1 = set(l1) #自动转换并去重
s2 = set([1,2,3,4,'c','d','a'])
s3 = s1.symmetric_difference(s2)
s4 = s2.symmetric_difference(s1)
print(s3)
print(s4) #两次打印的结果是一样的
{1, 2, 3, 4, 'd', 'c', 'ab', 'ds'}
{1, 2, 3, 4, 'd', 'ds', 'c', 'ab'}
symmetric_difference_update 与symmetric_difference 功能一样,只是它要更新原来的集合
update 更新某个元素
l1 = ['a','ab','ds']
s1 = set(l1) #自动转换并去重
s1.update('cd')
print(s1)
#输出结果:
{'d', 'ab', 'ds', 'a', 'c'}
python之路(四)-set集合的更多相关文章
- Python学习第四天集合
集合定义: 无序排列,可哈希 支持集合关系测试 成员关系测试 in not in 迭代 不支持:索引.元素获取.切片 集合的类型:set(),frozenset() 集合没有特定语法格式,只能通过工厂 ...
- python之路---05 字典 集合
二十.字典 可变数据类型 {key:value}形式 查找效率高 key值必须是不可变的数据类型 1.增删改查 1).增 dic["新key"] = "新v ...
- python之路四
内建函数 内建函数详解: 1. abs(x) abs()函数返回数字(可为普通型.长整型或浮点型)的绝对值.如果给出复数,返回值就是该复数的模.例如: >>>print abs(-2 ...
- Python基础(四)-集合
补充: 数据类型分类: 1.按照数据可变不可变: 可变:列表.字典 不可变:数字.字符串.元组 x={':1} print(id(x)) x.update({':2}) print(x) print( ...
- 【python之路11】集合数据类型(set)
集合数据类型(set):集合是不重复的无需序列 1.集合数据类型的创建 a = {11,22,33} #或 a = set() #创建空集合,不能用a={},这样创建的是字典类型 2.集合转换(将可迭 ...
- python基础(四)集合
[集合特点] 1.天生去重.循环 2 关系测试 -交集,差集,并集,(反向差集,对称差集) list = [1,2,3,4,5,3,6]list_2 =[2,3,5,7,8]list=set(lis ...
- Python之路系列笔记
备注:本套笔记内容来源于互联网,只做学习使用,如有侵权请联系本笔记作者. 资料内容 Python之路(一)——Python 初识 Python之路(二)——基础语法 Python之路(三)——函数 P ...
- Python之路【第十四篇】:AngularJS --暂无内容-待更新
Python之路[第十四篇]:AngularJS --暂无内容-待更新
- Python之路(第五篇) Python基本数据类型集合、格式化、函数
一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ...
随机推荐
- Linux 标准输入输出、错误输出、重定向标准输出
再来看看 >& 操作符: 重定向操作符 描述 > 将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或句柄. < 从文件而不是从键盘或句柄读入命令输入. >& ...
- Tomcat的三种安装方式:解压版、安装版、配置成Windows服务版
https://blog.csdn.net/Jessica_XLF/article/details/81711429
- 【转】图解CSS padding、margin、border属性
http://www.cnblogs.com/linjiqin/p/3556497.html 图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(b ...
- 大数据实操2 - hadoop集群访问——Hadoop客户端访问、Java API访问
上一篇中介绍了hadoop集群搭建方式,本文介绍集群的访问.集群的访问方式有两种:hadoop客户端访问,Java API访问. 一.集群客户端访问 Hadoop采用C/S架构,可以通过客户端对集群进 ...
- 20175126《Java程序设计》第三学习总结
# 20175126 2016-2017-2 <Java程序设计>第三周学习总结 ##课余收获——利用JAVA编写最简单的斗地主程序 -由于最近身边的朋友都在玩手机上的斗地主小游戏,我也就 ...
- paloalto防火墙的优势
1.所有 Palo Alto Networks 防火墙提供一个可用于执行防火墙管理功能的带外管理端口 (MGT).通过使用该 MGT 端口,可以将防火墙的管理功能与数据处理功能分开,从而保护对防火墙的 ...
- pythone函数基础(15)接口开发初识
导入需要的第三方模块 import flaskimport toolsimport json,redisimport random server = flask.Flask(__name__)#新建一 ...
- Oracle SQL Developer 调试存储过程步骤(Oracle)
1.首先你编译通过你的存储过程,编译的时候一定要选“编译以进行调试”. 2.在想要调试的行上设置好断点. 3.点击“调试”按钮,然后输入存储过程入参,点“确定”开始调试. 4.断点进入后,上方会出现一 ...
- lodash 判断一个数据是否包含另一个数组
if (_.intersection(v.ids, value).length == value.length) { this.groupListExtData.push(v.names); } ...
- 将EditPad Lite 加入鼠标右键
> 开始 > regedit 如图新建shell及command