七、python沉淀之路--集合
一、
1、字符串转集合
s = 'hello'
se = set(s)
print(se)
{'e', 'o', 'h', 'l'}
2、列表转集合
l1 = ['hello','python','nice']
se1 = set(l1)
print(se1)
{'nice', 'python', 'hello'}
3、add:添加元素
s = {1,2,3,4,5,6,}
s.add(9)
print(s)
{1, 2, 3, 4, 5, 6, 9}
4、clear:清空
s1 = {1,2,3,4,5}
s1.clear()
print(s1)
set()
5、copy:复制
s = {1,2,3,4,5,6,}
s0 = s.copy()
print(s0)
{1, 2, 3, 4, 5, 6}
6、pop:随机删除一个元素
s = {'hello',2,'python',3,4,5,6,'china',1}
s.pop()
print(s)
7、remove:删除指定元素,元素不存在时,会报错
s = {'hello',2,'python',3,4,5,6,'china',1}
s.remove('python')
print(s)
s.remove(4)
print(s)
# s.remove(9) #会报错
# print(s)
{1, 2, 3, 4, 5, 6, 'china', 'hello'}
{1, 2, 3, 5, 6, 'china', 'hello'}
8、discard:指定删除,元素不存在时,不会报错,会把原集合打印出来
s = {'hello',2,'python',3,4,5,6,'china',1}
s.discard(2)
print(s)
s.discard('python')
print(s)
s.discard(9)
print(s)
{1, 3, 4, 5, 6, 'hello', 'python', 'china'}
{1, 3, 4, 5, 6, 'hello', 'china'}
{1, 3, 4, 5, 6, 'hello', 'china'}
9、交集(intersection & )、并集(union | )、差集( difference - )、交叉补集(symmetric_difference)
py_s = {'张三','张思','王五','王六'}
lix_s = {'赵七','赵八','王五','王六' }
print('交集',py_s.intersection(lix_s))
print('交集',py_s & lix_s)
print('补集',py_s.union(lix_s))
print('补集',py_s | lix_s)
print('差集', py_s.difference(lix_s))
print('差集', py_s - lix_s)
print('差集',lix_s.difference(py_s))
print('差集',lix_s - py_s)
print('交叉补集',py_s.symmetric_difference(lix_s))
print('交叉补集',py_s ^ lix_s)
交集 {'王六', '王五'}
交集 {'王六', '王五'}
补集 {'赵八', '王五', '赵七', '王六', '张思', '张三'}
补集 {'赵八', '王五', '赵七', '王六', '张思', '张三'}
差集 {'张思', '张三'}
差集 {'张思', '张三'}
差集 {'赵八', '赵七'}
差集 {'赵八', '赵七'}
交叉补集 {'赵八', '赵七', '张思', '张三'}
交叉补集 {'赵八', '赵七', '张思', '张三'}
注:差集的先后顺序不一样,结果也不一样
10、difference_update :更新完复制,即改变了原来的集合
py_s = {'张三','张思','王五','王六'}
lix_s = {'赵七','赵八','王五','王六' }
py_s.difference_update(lix_s) #相当于 py_s = py_s - lix_s
print(py_s)
{'张思', '张三'}
11、issubset:判断子集,issuperset:判断父集
s1 = {1,2,3}
s2 = {1,2,3,4,5}
print('s1是s2的子集',s1.issubset(s2))
print('s2是s1的父集',s2.issuperset(s1))
s1是s2的子集 True
s2是s1的父集 True
12、update:一次性可以更新多个值,即可以通过更新把多个值加入进去
s1 = {1,2,3}
s2 = {1,2,3,4,5}
s1.update(s2)
print(s1)
{1, 2, 3, 4, 5}
对比add功能,add一次性只能加一个值进去
13、frozenset这是一种特殊的定义集合的方式:它定义的集合不可变
s=frozenset('hello')
print(s)
二、 集合的一些零散知识汇集
1、集合:具备三个条件:一是由不同元素组成;二是无序;三是其元素只能是数字、字符串、元素
也就是里面的元素必须不可哈希,(哈希简单理解就是 不可变的类型)
2、集合 可以增加、 删除、 但不能修改,所以集合是可变的。
3、集合可用于测试,用 in 来判断某元素是否是里面元素
三、字符串、 列表、元素、字典、集合 ,简单总结对比
1、字符串不可用索引来修改,因为不可变,但是可以用索引来取值
2、元组 是对列表的加工,其元素不可被修改,不能被增加 或 删除, 元组最后一个元素后面建议都加一个逗号,方便区分
3、元素 也可以 索引 、 切片 、 for 循环,
4、元组 有序,是可迭代对象
5、字典无序
可变:列表、字典
不可变:字符串、元组、数字
顺序访问:字符串、数字、元组
映射访问:字典
直接访问:数字
存放元素个数
容器类型:列表、元素、字典
元素类型:字符串
七、python沉淀之路--集合的更多相关文章
- 十六、python沉淀之路--迭代器
一.迭代器 1.什么是迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前走). 2.可迭代对象:实 ...
- 十八、python沉淀之路--生成器
一.生成器 生成器总结:语法上和函数类似:生成器函数和常规函数几乎是一样的.他们都是使用def语句进行定义,差别在于生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值.自动实 ...
- 十五、python沉淀之路--eval()的用法
一.eval函数 python eval() 函数的功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法:eval(source[, globals[, locals]]) -> v ...
- 十二、python沉淀之路--内置函数
1.abs函数,求绝对值. a = abs(-3) print(a) 返回:3 2.all函数:判断是否是可迭代对象. 官方解释:Return True if bool(x) is True for ...
- 九、python沉淀之路--递归、全局变量、局部变量、作用域
一.递归 1.递归函数,同时使用嵌套,并且是将别的函数作用于调用函数里面 例1 num = [1,2,3,4,5] def add_one(i): return i+1 def reduce(i): ...
- 五、python沉淀之路--字典
一. 1.根据序列,创建字典,并指定统一的值 v = dict.fromkeys(["],222) print(v) {': 222} 2.根据key 获取值,key不存在时,报错:get方 ...
- python沉淀之路~~整型的属性
python的基础知识: 基本数据类型:int str list tuple dict bool 一.整型的属性功能 1.工厂方法将字符串转换成整型 a = " b = ...
- 十九、python沉淀之路--装饰器
一.实现装饰器的预备知识 装饰器 = 高阶函数 + 函数嵌套 + 闭包 1.高价函数定义: 1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个,都可称之 ...
- 十七、python沉淀之路--三元表达式、列表解析
一.三元表达式 a = '骑车' res = '好天气' if a == '骑车' else '睡觉' print(res) 睡觉 解析:res = '好天气' if a == '骑车' ...
随机推荐
- 17南宁区域赛 I - Rake It In 【DFS】
题目链接 https://nanti.jisuanke.com/t/19975 题意 Alice 和 Bob 玩游戏 在一个4x4 的方格上 每个人 每次选择2x2的区域 将里面的四个值求和加到最后的 ...
- Matlab命令合集 妈妈再也不用担心我不会用matlab了
matlab命令 一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看.2.who 可以查看当前工作空间变 ...
- linux命令详解之df(6/19)
df命令作用是列出文件系统的整体磁盘空间使用情况.可以用来查看磁盘已被使用多少空间和还剩余多少空间. df命令显示系统中包含每个文件名参数的磁盘使用情况,如果没有文件名参数,则显示所有当前已挂载文件系 ...
- INSPIRED启示录 读书笔记 - 第9章 产品副经理
发现帮手 从本质上讲,产品就是创意,产品经理的职责是想出好点并加以实现.我们需要好点子,有些想法是我们自己的创意,但如果仅依靠自己,就会严重限制创意的发挥 做产品要找公司最聪明的人合作,发现公司里潜在 ...
- JAVAWeb学习总结(一)
一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源( ...
- JDK各个版本的新特性jdk1.5-jdk8[转]
JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一 ...
- RabbitMQ解决分布式事务
案例:经典案例,以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯. RabbitMQ解决分布式事务原理: 采用最终 ...
- 【P3572】little bird(单调队列+DP)
一眼看上去这个题就要DP,可是应该怎么DP呢,我们发现,数据范围最多支持O(NlogN),但是这种DP貌似不怎么有,所以应该是O(N)算法,自然想到单调队列优化DP. 然后我们先考虑如果不用单调队列应 ...
- android.intent.category.LAUNCHER和android.intent.action.MAIN
一个应用程序可以有多个Activity,每个Activity是同级别的,那么在启动程序时,最先启动哪个Activity呢? 有些程序可能需要显示在程序列表里,有些不需要.怎么定义呢? android. ...
- LeetCode——sum-root-to-leaf-numbers
Question Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a ...