python学习之【第七篇】:Python中的集合及其所具有的方法
1.前言
python中的集合set与列表类似,它们最大的区别是集合内不允许出现重复元素,如果在定义时包含重复元素,会自动去重。
集合是无序的,集合中的元素必须是不可变类型。集合可以作为字典的key。
2.集合的定义
集合用一对花括号{}定义
set = {'dog','cat','pig','monkey'}
print(set)
# 输出
{'pig', 'cat', 'monkey', 'dog'}
3.集合的常见操作
- add(x)
往集合的尾部添加元素x
set = {'dog','cat','pig','monkey'}
set.add('china')
set.add('china')
print(set)
# 输出
{'cat', 'pig', 'china', 'monkey', 'dog'}
注意:集合内部不允许出现重复元素,如果有重复元素,集合会自动去重,所以当往集合的尾部添加两个相同元素时,只会保留一个。
- clear()
清空集合内的元素
set = {'dog','cat','pig','monkey'}
set.clear()
print(set)
# 输出
set()
- pop()
随机删除集合内的一个元素,并返回所删除的元素
set = {'dog','cat','pig','monkey'}
print(set.pop())
print(set)
# 输出
'pig'
{'cat', 'monkey', 'dog'}
- remove(x)
删除集合内的元素x,如果元素x不存在会报错
set = {'dog','cat','pig','monkey'}
set.remove('dog')
print(set)
set.remove('dog')
# 输出
{'pig', 'cat', 'monkey'}
报错,因为已经把元素'dog'从集合中删去了,再次删除'dog'时,由于集合中已经不存在该元素了,所以报错
- discard(x)
删除集合内的元素x,如果元素x不存在会返回None,不会报错
set = {'dog','cat','pig','monkey'}
set.discard('dog')
print(set)
print(set.discard('dog'))
# 输出
{'pig', 'cat', 'monkey'}
None
4.集合的关系运算
- 求交集s1 & s2
set1 = {'a','b','c','d'}
set2 = {'h','e','a','l','c'}
print(set1 & set2)
# 输出
{'c', 'a'}
- 求并集s1 | s2
set1 = {'a','b','c','d'}
set2 = {'h','e','a','l','c'}
print(set1 | set2)
# 输出
{'c', 'a', 'h', 'd', 'b', 'l', 'e'}
- 求差集s1 - s2
set1 = {'a','b','c','d'}
set2 = {'h','e','a','l','c'}
print(set1 - set2)
# 输出
{'b', 'd'}
5.利用集合对列表去重
利用集合内不允许出现重复元素这一天然特点,我们可以用来对列表去重
l1 = ['h','e','l','l','o']
#1.将列表转为集合,集合会自动去重
s1 = set(l1)
#2.将去重后的集合再转回列表
l1 = list(s1)
print(l1)
# 输出
['l', 'o', 'h', 'e']
想必细心的你已经看出来了,去重前后的列表中的元素顺序变了,由于集合是无序的,有序的列表转换成集合后变成了无序的,所以元素的顺序发生了变化,这并不是我们想要的,我们只想去掉列表中重复的元素而不想改变列表中元素的顺序,这也就是这种去重方法的缺点。
python学习之【第七篇】:Python中的集合及其所具有的方法的更多相关文章
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python学习【第七篇】基本数据类型
基本数据类型 数字 2是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子,E标记表示10的幂.在这里,52.3E-4表示52.3*10-4. (-5+4j)和(2 ...
- python学习【第七篇】python文件操作
一.文件操作过程 1. 打开文件,得到文件句柄并赋值给一个变量2. 通过句柄对文件进行操作3. 关闭文件 # 1.打开文件,得到文件句柄 f_handle = open('aa.txt', 'r', ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
- Python之路(第七篇)Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数
一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") ret ...
- Python 学习笔记(七)Python字符串(四)
输入输出 输入函数 raw_input (Python3:input) >>> raw_input("请输入一个字母") #获取输入内容的一个函数 请输入一个字母 ...
- Python 学习笔记(七)Python字符串(一)
字符串 字符串或串(String)是由数字.字母.下划线组成的一串字符,用双引号或单引号包裹的为字符串 1 >>> "hello world" 2 'hello ...
- Python 学习笔记(七)Python字符串(三)
常用字符串方法 split() 分割字符串,指定分隔符对字符串进行分割 join() 将序列中的元素以指定的字符连接生成一个新的字符串 str.strip() 用于移除字符串头尾指定的字符(默认 ...
- Python 学习笔记(七)Python字符串(二)
索引和切片 索引 是从0开始计数:当索引值为负数时,表示从最后一个元素(从右到左)开始计数 切片 用于截取某个范围内的元素,通过:来指定起始区间(左闭右开区间,包含左侧索引值对应的元素,但不包含右测 ...
- HIbernate学习笔记(七) hibernate中的集合映射和继承映射
九. 集合映射 1. Set 2. List a) @OrderBy 注意:List与Set注解是一样的,就是把Set更改为List就可以了 private List< ...
随机推荐
- 【Oracle】SQL语句优化
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最 ...
- mvvm的初步思想
1.Object.defineProperty(obj,key,desc); 用法:1.给对象新增属性和特性 2.修改对象属性值和特性 desc(属性特性): 1.enumerable:boolean ...
- 探讨Microsoft Solution Framework(MSF)框架下管理的秘密
hello,同学们,同胞们,同志们,同龄们,这样们,那样们,们们们,我又回来写“论文”了,半年时间没见我发布任何博文,是不是认为我被潜规则了啊,哈哈.我想死你们了.好了,废话不多说,进入今天主题: ...
- .NET LINQ分析AWS ELB日志避免996
前言 小明是个单纯的.NET开发,一天大哥叫住他,安排了一项任务: "小明,分析一下我们超牛逼网站上个月的所有AWS ELB流量日志,这些日志保存在AWS S3上,你分析下,看哪个API的响 ...
- Webshell免杀绕过waf
转自圈子404师傅 0x01 前言# 尽最大努力在一文中让大家掌握一些有用的WEBSHELL免杀技巧 0x02 目录# 关于eval 于 assert 字符串变形 定义函数绕过 回调函数 回调函数变形 ...
- CDN实现原理
避让:尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定. 检测:通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时监 ...
- [BZOJ4947] 字符串大师 - KMP
4974: [Lydsy1708月赛]字符串大师 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 739 Solved: 358[Submit][Sta ...
- Cocos2d-x 学习笔记(11.3) JumpBy JumpTo
1. JumpBy JumpTo JumpBy,边跳边平移,不只做垂直向上的抛物动作,同时还在向终点平移.JumpTo是JumpBy的子类. 1.1 成员变量 create方法 JumpBy: Vec ...
- MyBatis 开发手册
这一遍看Mybatis的原因是怀念一下去年的 10月24号我写自己第一个项目时使用全配置文件版本的MyBatis,那时我们三个人刚刚大二,说实话,当时还是觉得MyBatis挺难玩的,但是今年再看最新版 ...
- redis应用场景总结redis平时我们用到的地方蛮多的,下面就了解的应用场景做个总结:
redis常见应用场景 1.热点数据的缓存 由于redis访问速度块.支持的数据类型比较丰富,所以redis很适合用来存储热点数据,另外结合expire,我们可以设置过期时间然后再进行缓存更新操作,这 ...