一、集合

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 基本数据类型(下)的更多相关文章

  1. mysql 开发基础系列13 选择合适的数据类型(下)

    一.  BloB和Text 1. 合成索引 合成索引可以提高大文本字段BLOB和Text的查询性能, 合成索引是在表中增加一个字段存放散列值,这种技术只能用于精确匹配的查询,可以使用md5()或sha ...

  2. JavaScript学习笔记——变量和数据类型

    一.javascript命名规范 1. 严格区分大小写 2. 变量的命名必须以字母或 _或 $开头,余下的部分可以是任意的字母,数字,或者是 _或者是$ 3.不能用关键字或者是保留字命名. 4.jav ...

  3. SqlServer中日期和时间数据类型及函数 【转】

    来源:http://blog.csdn.net/royalwzy/article/details/6446075 日期和时间数据类型 下表列出了 Transact-SQL 的日期和时间数据类型. 数据 ...

  4. go的基本数据类型

    一,数据类型的介绍 在go语言中,数据类型是用于声明函数和变量的:数据类型是为了把数据分成所需内存不同大小的数据,除了在需要使用大数据的时候才会申请大内存,这样就会充分的使用内存 Go 语言按类别有以 ...

  5. JavaScript基础知识(数据类型)

    数据类型 布尔:true/fasle console.log(typeof true);// "boolean" Number : true -->1 false --> ...

  6. SAP 数据类型

    数据元素和基本类型对应关系 数据字典预置类型 ABAP类型 运行长度 说明 ACCP N(6) 6 会计计算周期 CHAR C(n) 1-255 字符 CLNT C(3) 3 集团,数据区域代码 CU ...

  7. 1. Ubuntu下MongoDB的安装和使用

    一.MongoDB介绍 MongoDB 是一个是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似jso ...

  8. SQLSERVER中KeyHashValue的作用(下)

    SQLSERVER中KeyHashValue的作用(下) 昨天中午跟高文佳童鞋讨论了KeyHashValue的作用,到最后还是没有讨论出结果 昨天晚上德国的兄弟傅文伟做了一下实验,将实验结果交给我 感 ...

  9. nodejs(三)下之mangoDB

    mongoDB 简介 一.什么是MongoDB ? 1.MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能. 2.Mo ...

随机推荐

  1. 查询局域网指定段内存活IP

    目录 批量ping 输出到指定文件 批量ping for /L %i IN (起始,扫描间距,结束) DO ping -w 2 -n 1 10.224.131.%i 如 for /L %i IN (5 ...

  2. 解决:gradle 前言中不允许有内容

    将Android Studio 升级到4.0然后创建一个新项目,编译出现“ gradle 前言中不允许有内容” 的错误,在网上找了很多资料,众说纷纭,但都没有解决我的问题,最后反复摸索把问题解决了. ...

  3. PIVOT | UNPIVOT_1

    Pivot应用 /* <Microsoft SQL Server 2008 T-SQL Fundamentals (PRO-Developer)> <Microsoft SQL Se ...

  4. 《Redis开发与运维》

    第1章 初识Redis 1. Redis介绍: Redis是一种基于键值对(key-value)的NoSQL数据库. 与很多键值对数据库不同的是,Redis中的值可以是由string(字符串).has ...

  5. c++11新特性注意点

    本文记录下一些c++11新特性需要注意的方面,供日后参考 一.auto auto可以当成“占位符”,根据右边的类型自动推导出变量的类型.需要注意的是 auto不能解决溢出的问题. auto可以与指针和 ...

  6. Tensorflow2 自定义数据集图片完成图片分类任务

    对于自定义数据集的图片任务,通用流程一般分为以下几个步骤: Load data Train-Val-Test Build model Transfer Learning 其中大部分精力会花在数据的准备 ...

  7. (二)、JAVA运行时数据区域

    根据<Java 虚拟机规范(Java SE 7版)>规定,Java虚拟机所管理的内存,将会包括以下几个运行时数据区域: 注: 1.由所有线程共享的数据区: 对应 java内存模型的主内存, ...

  8. docer

    docker默认是不保存文件的,包保存文件需要进行映射 dockerfile编写如下 直接下面的命令会失败 因为run后面的命令/bin/bash会失败,执行的是dockffile中定义的httpd ...

  9. JavaWeb网上图书商城完整项目--day02-2.regist页面输入框得到焦点隐藏label

    实现当光标输入在输入输入框的时候,将后面的内容隐藏,例如在用户名称输入信息的时候,后面的用户名不能为空隐藏 我们来看看regist.js的代码: //该函数在html文档加载完成之后会调用 $(fun ...

  10. MySql索引要注意的8个事情

    设计好MySql索引可以让你的数据库查询效率大为提高.设计MySql索引的时候,有一些问题需要值得我们注意的: 1,创建MySql索引 对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简 ...