day10 基本数据类型(下)
一、集合
1.作用
去重
#set的去重只能正对不可变类型,而且是无序的
l=['a','b',1,'a','a']
s=set(l)
s # 将列表转成了集合
{'b', 'a', 1}
l_new=list(s) # 再将集合转回列表
l_new
['b', 'a', 1] # 去除了重复,但是打乱了顺序
# 针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
l=[
{'name':'lili','age':18,'sex':'male'},
{'name':'jack','age':73,'sex':'male'},
{'name':'tom','age':20,'sex':'female'},
{'name':'lili','age':18,'sex':'male'},
{'name':'lili','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)
print(new_l)
# 结果:既去除了重复,又保证了顺序,而且是针对不可变类型的去重
[
{'age': 18, 'sex': 'male', 'name': 'lili'},
{'age': 73, 'sex': 'male', 'name': 'jack'},
{'age': 20, 'sex': 'female', 'name': 'tom'}
]
2.定义
在{}内用都逗号分隔多个元素,元素满足以下三个条件
第一、集合内必须为不可变类型
第二、集合内元素无序
第三、集合内没有重复元素,如有会自动去重
注意:s = {} 默认是空字典,要定义空集合
3.类型转换
print(set("aaaaaaccccbcbcbcb"))#不可转换数字类型
>>>{'b', 'c', 'a'}
4.内置方法
关系运算
4.1交集:两者共有的
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set1 & set2)
>>>{1, 3}
4.2合集:两者融合去重
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set1 | set2)
>>>{1, 2, 3, 4, 5, 7}
4.3差集:某个集合单独有的
#set1独有的
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set1 - set2)
>>>{2, 4}
#set2独有的
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set2 - set1)
>>>{5, 7}
4.4对称差集:两个集合各自单独有的组成的集合
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set2 ^ set1)
>>>{2, 4, 5, 7}
4.5父子集:判断包含关系
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set2 > set1)
>>>False
5.其他内置方法
5.1长度,成员运算,循环(略)
5.2discard(推荐使用),remove
#Remove an element from a set if it is a member.
#If the element is not a member, do nothing.
#文本解释,删除一个元素,如果不存在do nothing
s={1,2,3}
s.discard(4) # 删除元素不存在do nothing
print(s)
>>>{1,2,3}
s.remove(4) # 删除元素不存在则报错
>>>报错
5.2update
s={1,2,3}
s.update({1,3,5})#更新,取合集
print(s)
>>>{1, 2, 3, 5}
5.3pop
s={1,2,3}
res = s.pop()#默认删除第一个元素,并作为返回值返回
print(s)
>>>{2, 3}
print(res)
>>>1
5.4add
s={1,2,3}
s.add((1,2,3))#只能添加不可变类型
print(s)
5.5isdisjoint(了解)
s = {1,2,3,4}
res=s.isdisjoint({3,4,5,6}) # 两个集合完全独立、没有共同部分,返回True
print(res)
False
二 基本数据类型总结
day10 基本数据类型(下)的更多相关文章
- mysql 开发基础系列13 选择合适的数据类型(下)
一. BloB和Text 1. 合成索引 合成索引可以提高大文本字段BLOB和Text的查询性能, 合成索引是在表中增加一个字段存放散列值,这种技术只能用于精确匹配的查询,可以使用md5()或sha ...
- JavaScript学习笔记——变量和数据类型
一.javascript命名规范 1. 严格区分大小写 2. 变量的命名必须以字母或 _或 $开头,余下的部分可以是任意的字母,数字,或者是 _或者是$ 3.不能用关键字或者是保留字命名. 4.jav ...
- SqlServer中日期和时间数据类型及函数 【转】
来源:http://blog.csdn.net/royalwzy/article/details/6446075 日期和时间数据类型 下表列出了 Transact-SQL 的日期和时间数据类型. 数据 ...
- go的基本数据类型
一,数据类型的介绍 在go语言中,数据类型是用于声明函数和变量的:数据类型是为了把数据分成所需内存不同大小的数据,除了在需要使用大数据的时候才会申请大内存,这样就会充分的使用内存 Go 语言按类别有以 ...
- JavaScript基础知识(数据类型)
数据类型 布尔:true/fasle console.log(typeof true);// "boolean" Number : true -->1 false --> ...
- SAP 数据类型
数据元素和基本类型对应关系 数据字典预置类型 ABAP类型 运行长度 说明 ACCP N(6) 6 会计计算周期 CHAR C(n) 1-255 字符 CLNT C(3) 3 集团,数据区域代码 CU ...
- 1. Ubuntu下MongoDB的安装和使用
一.MongoDB介绍 MongoDB 是一个是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似jso ...
- SQLSERVER中KeyHashValue的作用(下)
SQLSERVER中KeyHashValue的作用(下) 昨天中午跟高文佳童鞋讨论了KeyHashValue的作用,到最后还是没有讨论出结果 昨天晚上德国的兄弟傅文伟做了一下实验,将实验结果交给我 感 ...
- nodejs(三)下之mangoDB
mongoDB 简介 一.什么是MongoDB ? 1.MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能. 2.Mo ...
随机推荐
- 【百度前端技术学院 Day7/8】布局
1. 定位 1.1 文档流 单个元素: 块级元素:内容宽度是其父元素的宽度的100%,并且与其内容一样高. 内联(行内)元素:高宽与他们的内容高宽一样.(所以不能为他们设置宽高) 元素之间的交互: 块 ...
- Censoring【KMP算法+堆栈模拟】
Censoring 传送门:链接 来源:UPC8203 题目描述 Farmer John has purchased a subscription to Good Hooveskeeping ma ...
- (九)logback.xml文件配置(按时间、文件大小和log名称生成日志)
原文链接:https://www.cnblogs.com/hhhshct/p/9084036.html rollingPolicy 设置:<rollingPolicy class="c ...
- idea同时选中多个相同的内容并编辑
原文链接: 首先选中你需要编辑的内容,然后Ctrl+R屏幕上会出现如下的操作栏 第一个框是查询并选中所有相同的内容第二个框是输入你要修改的内容,最后点击Replace all,就可以把所有内容替换.
- postman发送json数据
原文链接:https://blog.csdn.net/weixin_33387378/article/details/90721599 1.设置header Content-Type appli ...
- MySQL数据库几种常用的索引类型使用介绍
一.简介 MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 二.语句 1 2 CREATE TABLE table_name[col_nam ...
- yii2.0数据库操作
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...
- ssh生成单个公钥
ssh生成单个公钥命令: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 查看公钥: cat ~/.ssh/id_rsa ...
- Java中String创建原理深入分析
创建String对象的常用方式: 1. 使用new关键字 String s1 = new String(“ab”); // 2. 使用字符串常量直接赋值 String s2 = “abc”; 3 ...
- java8 探讨与分析匿名内部类、lambda表达式、方法引用的底层实现
问题解决思路:查看编译生成的字节码文件 目录 测试匿名内部类的实现 小结 测试lambda表达式 小结 测试方法引用 小结 三种实现方式的总结 对于lambda表达式,为什么java8要这样做? 理论 ...