从零开始的Python学习Episode 9——集合
集合
集合是一个无序的,不重复的数据组合,是python基本的数据类型,把不同的元素组成一起就形成集合。
一、创建集合
s = set('smile')
list = ['1','2','3']
print(s) #{'i', 'm', 's', 'e', 'l'}
s1 =set(list)
print(s1) #{'1', '3', '2'}
集合分两种:可变集合、不可变集合
可变集合(set):可添加和删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素。
不可变集合(frozenset):与上面相反,我们也可以调用frozenset()方法来创建一个不可变集合。
二、访问集合
集合是无序的,而且没有键(key),所以不能用索引和键来访问集合中的元素,只能通过遍历来查询集合中的元素 或者 通过in、not in关键字来判断集合中是否存在某元素。
三、更新集合
add()方法,添加一个元素
s = set('smile')
s.add('pup')
print(s)#{'i', 'pup', 'l', 'm', 'e', 's'}
update()方法,添加多个元素
s = set('smile')
s.update('pup')
print(s)#{'l', 'i', 'm', 's', 'e', 'p', 'u'}
remove()方法,删除一个特定元素
s = set('smile')
s.remove('m')
print(s)#{'s', 'e', 'l', 'i'}
clear()方法,清空集合
s = set('smile')
s.clear()
print(s)#set()空集合
注意:只有可变集合才能更新。
四、集合类型操作符
并集:
s = set('smile')
s1 = set('smilepu')
s2 = s1|s
print(s2)#{'u', 'm', 's', 'e', 'l', 'i', 'p'}
s2=s1.union(s)
print(s2)#{'u', 'm', 's', 'e', 'l', 'i', 'p'}
交集:
s = set('smile')
s1 = set('smilepu')
s2 = s1&s
print(s2)#{'i', 'm', 'l', 's', 'e'}
s2=s1.intersection(s)
print(s2)#{'i', 'm', 'l', 's', 'e'}
差集:
s = set('smile')
s1 = set('smilepu')
s2 = s1-s
print(s2)#{'u', 'p'}
s2=s1.difference(s)
print(s2)#{'u', 'p'}
对称差集(异或):选出不同的元素
s = set('smile')
s1 = set('smilepu')
s2 = s1^s
print(s2)#{'p', 'u'}
s2=s1.symmetric_difference(s)
print(s2)#{'p', 'u'}
子集:用<、issubset()判断是否是子集
s1={1,2,3,4}
s2={3,4,5,6}
s3={2,3,4}
print(s2<s1)#False
print(s3<s1)#True
print(s3.issubset(s1))#True
超集:>、issuperset()
s1={1,2,3,4}
s2={3,4,5,6}
s3={2,3,4}
print(s1>s2)#False
print(s1>s3)#True
print(s1.issuperset(s3))#True
从零开始的Python学习Episode 9——集合的更多相关文章
- 从零开始的Python学习Episode 23——进程
---恢复内容开始--- 进程 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用 ...
- 从零开始的Python学习Episode 22——多线程
多线程 线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. ...
- 从零开始的Python学习Episode 20——面向对象(3)
面向对象之封装 封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体. 隐藏 在python中用双下划线开 ...
- 从零开始的Python学习Episode 19——面向对象(2)
面向对象之继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称 为基类或超类,新建的类称为派生类或子类. 子类会“”遗传”父类的属性,从而解决代码重用问 ...
- 从零开始的Python学习Episode 17——序列化
序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语 言中也被称之为serialization,marshalling,flattenin ...
- 从零开始的Python学习Episode 16——模块
一.模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相 ...
- 从零开始的Python学习Episode 15——正则表达式
正则表达式 正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现,所以使用时要导入re模块.正则表达式模式被编译成一系列的字节码 ...
- 从零开始的Python学习Episode 13——常用模块
模块 一.time模块 时间戳(timestamp) :时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. 元组(struct_time) :struct_time元组共有9 ...
- 从零开始的Python学习Episode 12——迭代器&生成器
生成器 列表生成式 用于快速地生成一个列表 a = [x*x for x in range(1,9)] print(a) #输出[1, 4, 9, 16, 25, 36, 49, 64] 也可以用于生 ...
随机推荐
- C# foreach遇到async和await
一个简单的列子,需要把一个集合的数据添加到数据库中. 我先这样写了,然后报错了 public async Task<IHttpActionResult> Test([FromUri]str ...
- VC中TRACE ASSERT VERIFY之用法
一.TRACE宏 当选择了Debug目标,并且afxTraceEnabled变量被置为TRUE时,TRACE宏也就随之被激活了.但在程序的Release版本中,它们是被完全禁止的.下面是一个典 ...
- MongoDB常用指令
db 查看当前操作的数据库 show dbs 显示所有数据库 show collections 显示当前数据库下的所有集合 use database_name 连接到一个名叫[database_nam ...
- android学习:Android上面部署Apache FTPServer
经过了几天的研究,终于Apache FTPServer在Android的配置和使用上有了一些心得,现在分享出来,提供给大家参考,说到这儿又不得不吐槽一下这要命的转载了,找Apache FTPServe ...
- let与var的区别,为什么什么要用let?
1.var是全局声明,let是块级作用的,只适用于当前代码块 var a = 1: if(true){ let a; a=22: console.log(a);'//22 } if(){}内就是let ...
- 编写Makefile规则
一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 ...
- RUBY惯用方法(转)
RUBY惯用方法 目录 迭代 ||=赋值 程序入口 预设变量和特殊记号 inject 并行赋值 *的匹配 rescue简单用法 命名参数的默认值 精细duck typing控制 获取metaclass ...
- scala (8) 模糊匹配
object MatchDemo { /** * 定义偏函数用PartialFunction来表示 * PartialFunction[T1,T2]要求传入一个参数T1,T2代表返回的类型. * 偏函 ...
- 20155211 2016-2017-2 《Java程序设计》第3周学习总结
20155211 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 本周的内容还没有完全理解,将在上课前继续阅读. 教材学习中的问题和解决过程 在敲p88页的代 ...
- 预备作业03: 初体验---虚拟机virtual box
学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 昨天从下午到晚上一直在研究怎么安装也问了很多同学,也自己查了查百度,经过一晚上终于安装成功,于是今天一早 ...