Python学习笔记(八)—集合的学习
集合(set)是一个无序不重复元素的序列。
基本功能是进行成员关系测试和删除重复元素。
1、集合的作用
- 它可以把一个列表中重复的数据去掉,而不需要你再写判断
- 可以做关系测试,比如说有两个科目,一个数学,一个是化学,想找出来既学习了数学又学习了化学的同学,就可以用集合
2、集合的定义:
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...}
或者
set(value)
实例:
>>> set_one = {1,2,3,4,5,6}
>>> type(set_one)
<type 'set'>
>>> set_two = set([1,2,3,4])
>>> type(set_two)
<type 'set'>
>>> print set_one
set([1, 2, 3, 4, 5, 6])
>>> print set_two
set([1, 2, 3, 4])
>>>
3、集合的添加
添加集合有两种方式,一种是通过add方法添加,另外一种就是通过updata方法加入;
集合add方法:是把要传入的元素做为一个整个添加到集合中,例如:
>>> a = set("boy")
>>> a
set(['y', 'b', 'o'])
>>> a.add("girl")
>>> a
set(['y', 'girl', 'b', 'o'])
>>>
集合updata方法:是把要传入的元素拆分,做为个体传入到集合中,例如:
>>> a = set("boy")
>>> a
set(['y', 'b', 'o'])
>>> a.update("girl")
>>> a
set(['b', 'g', 'i', 'l', 'o', 'r', 'y'])
>>>
4、集合的删除
集合删除操作方法:
remove:删除元素,如果元素不存在会报错
>>> a
set(['b', 'g', 'i', 'l', 'o', 'r', 'y'])
>>> a.remove('y')
>>> a
set(['b', 'g', 'i', 'l', 'o', 'r'])
>>>
集合删除操作方法:
pop:删除一个随机的元素,并返回删除的元素
>>> a = {1,2,3,4,5}
>>> a
set([1, 2, 3, 4, 5])
>>> a.pop()
1
>>> a
set([2, 3, 4, 5])
>>>
集合删除操作方法:
discard:如果删除的元素存在,删除,不存在不做处理
>>> a = {1,2,3,4,5}
>>> a
set([1, 2, 3, 4, 5])
>>> a.discard(4)
>>> a
set([1, 2, 3, 5])
>>> a.discard(6)
>>> a
set([1, 2, 3, 5])
>>>
5、集合运算

取差集:在list中存在,在list2中没有的
>>> list = {1,2,3,4,5}
>>> list2 = {4,5,3,6,7}
>>> list-list2
set([1, 2])
>>>
取交集:就是取list1和list2中都有的
>>> list
set([1, 2, 3, 4, 5])
>>> list2
set([3, 4, 5, 6, 7])
>>> list & list2
set([3, 4, 5])
>>>
取并集:也就是把list1和list2合并了,然后去除重复的
>>> list
set([1, 2, 3, 4, 5])
>>> list2
set([3, 4, 5, 6, 7])
>>> list | list2
set([1, 2, 3, 4, 5, 6, 7])
>>>
通过intersection取交集
>>> list
set([1, 2, 3, 4, 5])
>>> list2
set([3, 4, 5, 6, 7])
>>> list.intersection(list2)
set([3, 4, 5])
>>>
通过union取并集
>>> list
set([1, 2, 3, 4, 5])
>>> list2
set([3, 4, 5, 6, 7])
>>> list.union(list2)
set([1, 2, 3, 4, 5, 6, 7])
>>>
通过difference取差集
>>> list
set([1, 2, 3, 4, 5])
>>> list2
set([3, 4, 5, 6, 7])
>>> list.difference(list2)
set([1, 2])
>>>
通过symmetric_difference取对称差集,即除去交集元素后的所有元素
a = ['','','','']
b = ['','','','']
a = set(a)
b = set(b)
res =a.symmetric_difference(b)
res1 = a^b
print(res,res1) 运行结果:
{'', '', '', ''} {'', '', '', ''}
6、方法的判断
>>> list1 = {1,2,3,4,5,6,9}
>>> list2 = {1,2,3,6,1}
>>> list3 = {1,2,3}
issubset:判断list3是否是list1的子集
>>> #判断list3是否是list1的子集
... list3.issubset(list1)
True
>>>
issuperset:判断list1是否是list3的父集
>>> #判断list1是否是list3的父集
... list1.issuperset(list2)
True
>>>
isdisjoint:判断list1和list3是否有交集,有交集返回false,没有交集返回true
>>> #判断list1和list3是否有交集
... list1.isdisjoint(list2)
False
symmetric_difference:对称差集,输出两个列表中都没有的值,也就是把两个集合中相同的去掉
>>> list1.symmetric_difference(list2)
set([4, 5, 9])
Python学习笔记(八)—集合的学习的更多相关文章
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- go微服务框架kratos学习笔记八 (kratos的依赖注入)
目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...
- 软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Go语言学习笔记八: 数组
Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
- Java学习笔记之---集合
Java学习笔记之---集合 (一)集合框架的体系结构 (二)List(列表) (1)特性 1.List中的元素是有序并且可以重复的,成为序列 2.List可以精确的控制每个元素的插入位置,并且可以删 ...
- Redis学习笔记八:集群模式
作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...
- Java IO学习笔记八:Netty入门
作者:Grey 原文地址:Java IO学习笔记八:Netty入门 多路复用多线程方式还是有点麻烦,Netty帮我们做了封装,大大简化了编码的复杂度,接下来熟悉一下netty的基本使用. Netty+ ...
- Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级
(四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...
随机推荐
- centos6 yum方式升级内核【转】
最近没有时间好久没有写文章了,今天由于需要安装docker学习虚拟容器的知识,需要升级OS的内核.目前我这边使用的OS是centos6.5,内核是2.6版本的,如下: cat /etc/issue u ...
- 【写在NOIP前】
快NOIP了,感觉自己得总结一下吧. 1.要自信啊,相信自己啊,我明明还是有些实力的是吧. 哪怕之前被教练怎么怼,自己别放弃啊 一定要注意心态吧,考试的时候怎么都不能慌,你不会的题也不会有多少人会做的 ...
- poj1077
题意:给出一个八数码问题,求解法,不可解则输出unsolvable. 分析:可以用ida*算法,估价函数可以使用每个数码到其最终位置的最短距离之和.对于不可解的判断,我这里用迭代深度大于100时判定为 ...
- 05 Go 1.5 Release Notes
Go 1.5 Release Notes Introduction to Go 1.5 Changes to the language Map literals The Implementation ...
- mac 删除垃圾篓中的文件
1.打开终端输入: sudo rm -rf /Volumes/kaid/.Trashes/ 2.输入本机密码
- Python subprocess- call、check_call、check_output
简介 subprocess模块用来创建新的进程,连接到其stdin.stdout.stderr管道并获取它们的返回码.subprocess模块的出现是为了替代如下旧模块及函数:os.system.os ...
- 如何从TFS(Visual Studio Team Foundation Server)映射下载本地文件夹
1.连接tfs项目 首先打开vs2017 ——>工具栏 中的 团队——> 选择团队的管理链接 2.选择管理工作区 显示管理工作区的弹窗,点击 编辑 显示弹窗,选择本地文件夹(即要保存 ...
- IntelliJ IDEA 建空包合并问题。
举例:我想在一个包下,创建2个空子包,这个时候,却无法再IDE里完成. 老是这样子,如果选中dff.sfsdf再右键 创建包的话,结局是再sfsdf下 又创建一个文件夹. 如果右键创建类的话,实际上在 ...
- WDK10+VS2015 驱动环境搭建
其实做驱动或者说底层安全的最大问题就是没有合适的资料去参考,网上很难找到想要的信息.比如搭建驱动环境我以前一直用的都是WDK7.1基于控制台去编译的,之前尝试过搭建WDK10+VS2015的组合环境, ...
- SSIS 学习之旅 FTP文件传输-FTP任务
这一章主要讲解一下FTP控件. 设计: 通过Demon库的Users表数据生成CSV文件. 生成后的CSV文件抛送到FTP指定目录下. 其他控件的使用这里就不做详细讲解了.大家如果有不懂得可以 ...