集合(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学习笔记(八)—集合的学习的更多相关文章

  1. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  2. go微服务框架kratos学习笔记八 (kratos的依赖注入)

    目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...

  3. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  4. Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  5. Go语言学习笔记八: 数组

    Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...

  6. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  7. Java学习笔记之---集合

    Java学习笔记之---集合 (一)集合框架的体系结构 (二)List(列表) (1)特性 1.List中的元素是有序并且可以重复的,成为序列 2.List可以精确的控制每个元素的插入位置,并且可以删 ...

  8. Redis学习笔记八:集群模式

    作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...

  9. Java IO学习笔记八:Netty入门

    作者:Grey 原文地址:Java IO学习笔记八:Netty入门 多路复用多线程方式还是有点麻烦,Netty帮我们做了封装,大大简化了编码的复杂度,接下来熟悉一下netty的基本使用. Netty+ ...

  10. Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级

    (四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...

随机推荐

  1. MySQL分布式集群之MyCAT(二)【转】

    在第一部分,有简单的介绍MyCAT的搭建和配置文件的基本情况,这一篇详细介绍schema的一些具体参数,以及实际作用        首先贴上自己测试用的schema文件,双引号之前的反斜杠不会消除,姑 ...

  2. 大数据系列之分布式大数据查询引擎Presto

    关于presto部署及详细介绍请参考官方链接 http://prestodb-china.com PRESTO是什么? Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持G ...

  3. Vue项目实现excel导出

    1.package.json里面安装三个插件 npm install  xlsx  --save npm install  script-loader  –save-dev npm install   ...

  4. 洛谷P2746校园网

    传送门啦 下面来看任务B.我们发现,图中只要存在入度为0的点和出度为0的点就永远不可能满足要求:" 不论我们给哪个学校发送新软件,它都会到达其余所有的学校 ".我们还发现,只要在入 ...

  5. jQuery对象与JS原生对象之间的转换

    1.将jQuery转换为dom对象的方法 [index] 或者.get(index): a.$(“#form”)[index] ,该方法获取form元素的dom对象 b.$(“#form”).get( ...

  6. Django基础 - 修改默认SQLite3数据库连接为MySQL

    Django数据库连接默认为SQLite3,打开setting.py可以看到数据库部分的配置如下: DATABASES = { 'default': { 'ENGINE': 'django.db.ba ...

  7. Kubernetes之YAML文件

    一.YAML 基础 YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便.它实质上是一种通用的数据串行化格式.后文会说明定义YAML文件创建Pod和创建Deployment. YA ...

  8. Jmeter的接口测试简介

    一.安装Jmeter                                                          Jmeter官方首页:http://jmeter.apache. ...

  9. 2015309南皓芯《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 步骤一(新建文件夹):打开windows下的cmd → 输入cd Code命令进入Code目录 → 输入md 20 ...

  10. 使用apt install和使用apt-get install的区别是什么

    apt-get是老版的命令,apt是新版的命令,apt还包含了apt-get cache等等,用起来更方便.因为apt刚刚出来,所以允许有apt-get和apt共存,以后apt-get就要淘汰了.