集合
set
什么是集合?
1.不同元素组成
2.集合是无序的
3.集合中的元素必须是不可变类型。
定义集合
s = {1,2,3,4,33,3,4,5} print(type(s)) --- class 'set' print(s) --- {33, 2, 3, 4, 5, 1}
集合是无序的,去重的。
s = {'hello','world','alex','alex'} print(s) --- {'alex', 'hello', 'world'}
集合必须是可hash类型
s = {[1,2,3],1} --- TypeError: unhashable type: 'list'
直接用set定义一个集合
s = set('hello') print(s) --- {'l', 'e', 'o', 'h'}
将其它类型转换为set类型
s = set(['alex','alex','hehe']) print(s) --- {'hehe', 'alex'}
集合的内置放法
add ---- 添加元素
s = {1,2,3,4} s.add('s') s.add('3') s.add(3) print(s) --- {'s', 1, 2, 3, 4, '3'}
clear ---- 清空元素
s.clear() print(s) --- set()
copy ----复制
s1 = s.copy() print(s1) --- {1, 2, 3, 4, 's', '3'}
pop ---- 删除,随机的删除,取出
s = {'s',3,1,2,3,4} s.pop() print(s) --- {2, 3, 4, 's'}
remove ---- 删除指定元素
s = {'s',3,1,2,3,4} s.remove(3) print(s) --- {1, 2, 4, 's'}
discard ---- 当删除不存在的元素时不会报错--丢弃,放弃
s = {'s',3,1,2,3,4} s.discard('asdfasdf') print(s) --- {1, 2, 3, 4, 's'}
集合关系运算
计算出既学linux又学python的人
python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg'] python_and_linux_l = [] for p_name in python_l: if p_name in linux_l: python_and_linux_l.append(p_name) print(python_and_linux_l) --- ['ctg', 'zy']
使用集合计算出结果
intersection ---- 求两个集合的交集
p_s = set(python_l) l_s = set(python_l) print(p_s,l_s) print(p_s.intersection(l_s)) print(p_s&l_s) --- {'zy', 'ctg', 'zzgx'} {'hehe', 'zy', 'ctg'} {'zy', 'ctg'} {'zy', 'ctg'}
union ---- 求并集
python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg'] p_s = set(python_l) l_s = set(linux_l) print(p_s.union(l_s)) print(p_s|l_s) --- {'ctg', 'zy', 'zzgx'} {'ctg', 'zy', 'zzgx'}
差集
python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg','hehe'] p_s = set(python_l) l_s = set(linux_l) print(p_s-l_s) print(l_s-p_s) print(p_s.difference(l_s)) --- {'zzgx'} {'hehe'} {'zzgx'}
symmetric_difference ---- 交叉补集 -- 将两个集合中不同的元素取出
python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg','hehe'] p_s = set(python_l) l_s = set(linux_l) print(p_s.symmetric_difference(l_s)) print(p_s^l_s) --- {'hehe', 'zzgx'} {'hehe', 'zzgx'}
集合的其它内置方法
difference_update ---- 求完差集后直接赋值给p_s.
python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg','hehe'] p_s = set(python_l) l_s = set(linux_l) print(p_s,l_s) p_s.difference_update(l_s) # 等价于 p_s=p_s-l_s print(p_s) --- {'zy', 'ctg', 'zzgx'} {'ctg', 'hehe', 'zy'} {'zzgx'}
isdisjoint ---- 如果两个集合之间没交集,则返回一个True
s1={1,2} s2={3,5} print(s1.isdisjoint(s2)) --- True
issubset ---- 判断一个集合是否是另一个集合的子集
s1 = {1,2} s2 = {1,2,3} print(s1.issubset(s2)) print(s2.issubset(s1)) --- True` False
issuperset ---- 判断一个集合是否是另一个集合的父集
s1 = {1,2} s2 = {1,2,3} print(s1.issubset(s2)) print(s2.issubset(s1)) --- False True
update ---- 将一个集合和另一个集合合并并赋值,可以放多个值
s1={1,2} s2={1,2,3} s3={4,5} s1.update(s2,s3) print(s1) --- {1, 2, 3, 4, 5}
frozenset ---- 定义不可变集合
s = frozenset('hello') print(s) s.pop() --- Error...报错
将列表去重
names=['alex','alex','wupeiqi'] names=list(set(names)) print(names) --- {'wupeiqi', 'alex'} ['wupeiqi', 'alex']
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式
史诗级Java/JavaWeb学习资源免费分享 欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回复关键字免费领取)回复关键字:"电商项目2"免费领取:
- 下一篇
一个JAVA渣渣的校招成长记,附BAT美团网易等20家面经总结
欢迎关注我的微信公众号:“Java面试通关手册”(坚持原创,分享美文,分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取):今天分享一篇牛客网上的一个同学分享的校招,这位同学面试了很多公司,也总结了很多面试题目,面试题目大多都是平时可以练习到了,比如转链表和爬楼梯等算法问题在剑指offer上都有,我也已经更新在公众号(“Java面试通关手册”)上了,查看历史信息即可看到。 作者:633_重庆森林链接:https://www.nowcoder.com/discuss/50439?type=0&order=0&pos=5&page=5来源:牛客网 整个三月份通过牛客网和网友分享的经验学到了很多东西,现在反馈一下我的面试经历,希望对同学们有帮助。 个人情况:大三本EE方向渣硕,经过实验室学长内推,于三月底完成面试。岗位是Java研发。 校招是实力和运气的结合,缺一不可。 心态一定要摆正,毕竟我们不可能让所有人都认可你。而且每家公司每个面试官的要求和风格都不一样,所以我们不要因为某家公司或者某个面试官的评价而怀疑自己。 挂了没有关系,咱们这个...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度