9.集合set和frozenset冻结集合函数
集合set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以在set中没有重复的key。
集合中的元素要求是不可变的并且还是唯一的,我们就利用它是唯一来做去重。
set可以看成数学意义上的无序和无重复的集合,因此,两个set可以做数学意义上的交集、并集等操作。
一、集合特点-去重
lst=[1,2,3,2,3,4,2,5,6,2] #定义列表lst
print(lst) #输出列表
print(set(lst)) #lst转化为集合输出(去重)
print(list(set(lst))) #去重后的集合转化为列表输出
结果:
[1, 2, 3, 2, 3, 4, 2, 5, 6, 2]
{1, 2, 3, 4, 5, 6}
[1, 2, 3, 4, 5, 6]
二、集合的基本操作-交集
交集、并集、差集、反交集、子集、超集
set={1,2,3} #定义集合set
set1={2,3,4} #定义集合set1
set2=set | set1 #并集-合并集合
set3=set-set1 #差集-set中的单独元素
set4=set ^ set1 #反交集-两个集合中的单独元素
set5=set < set1 #set是set1的子集吗?输出布尔值
set6=set > set1 #set是set1的超集吗?输出布尔值
print(set & set1) #交集-两个集合中的共有元素
print(set2)
print(set3)
print(set4)
print(set5)
print(set6)
结果:
{2, 3}
{1, 2, 3, 4}
{1}
{1, 4}
False
False
三、集合的增删改查
1.增加
s = {"罗志祥", '文章', "周星驰"}
s.add("何炅")
print(s)
s.add("何炅") # 重复的内容不会被添加到set集合中
print(s)
s1 = {"刘德华", '张学友', "张柏芝"}
s1.update("陈冠希") # 迭代更新
print(s1)
s1.update(["唐韵", "林逸","林逸"])
print(s1)
结果:
{'周星驰', '罗志祥', '何炅', '文章'}
{'周星驰', '罗志祥', '何炅', '文章'}
{'张柏芝', '刘德华', '冠', '张学友', '陈', '希'}
{'张柏芝', '刘德华', '冠', '林逸', '张学友', '陈', '希', '唐韵'}
2.删除
随机删除、指定元素删除、清空集合
s = {"周星驰", '周星星', "周瑞发","张学友", "杨虎城"}
item = s.pop() # 随机弹出⼀个.
print(s)
print(item)
s.remove("周星星") # 直接删除元素
# s.remove("刘亦菲") # 不存在这个元素. 删除会报错
print(s)
s.clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和dict区分的.
print(s) # set()
结果:
{'周星星', '张学友', '周瑞发', '杨虎城'}
周星驰
{'张学友', '周瑞发', '杨虎城'}
set()
3.修改
set集合中的数据没有索引. 也没有办法去定位⼀个元素. 所以没有办法进⾏直接修改.
我们可以采⽤先删除后添加的⽅式来完成修改操作
s = {'阿斯顿','阿瑟东','阿三的'}
s.remove('阿三的')
s.add('周星星')
print(s)
结果:
{'周星星', '阿瑟东', '阿斯顿'}
4.查询
# set是⼀个可迭代对象. 所以可以进⾏for循环
s = {'阿斯顿','阿瑟东','阿三的'}
for i in s:
print(i)
结果:
阿斯顿
阿瑟东
阿三的
四、frozenset函数
描述
frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
语法
frozenset() 函数语法:
class frozenset([iterable])
参数
- iterable -- 可迭代的对象,比如列表、字典、元组等等。
返回值
返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。
实例
以下实例展示了 frozenset() 的使用方法:
a=frozenset(range(10)) #生成一个新的不可变集合
print(a)
b=frozenset('runoob') #创建不可变集合
print(b)
c=frozenset(['终止','啊实打实','阿萨']) #通过frozenset把集合变得可哈希(把不可变集合作为字典的key)
print(c)
dic={c:'123'}
print(dic)
结果:
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
frozenset({'r', 'b', 'u', 'o', 'n'})
frozenset({'终止', '啊实打实', '阿萨'})
{frozenset({'终止', '啊实打实', '阿萨'}): '123'}
9.集合set和frozenset冻结集合函数的更多相关文章
- frozenset冻结集合函数
1.描述 frozenset()返回一个冻结的集合,冻结后不能添加.删除和修改. set()无序且不重复,是可以变的,有add.remove.扩展:删除重复数据,还可以计算交集.差集.并集等 2.函数 ...
- Python基础(三)——集合、有序 无序列表、函数、文件操作
1.Set集合 class set(object): """ set() -> new empty set object set(iterable) -> n ...
- 深浅拷贝 集合(定义,方法) 函数(定义,参数,return,作用域) 初识
深浅拷贝 在python中浅拷贝 a=[1,2,3,4,]b=a.copy()b[0]='3333'print(a) #[1, 2, 3, 4] 浅拷贝一层并不会对a造成变化print(b) #[33 ...
- Py集合,字符串的格式化,函数,便利
可变与不可变 不可变指的是:重新赋值时,内存中的id值会变得 其中有:字符串,数字,元组 name="sb" v=id(name) print(v) name ="ale ...
- scala的多种集合的使用(2)之集合常用方法
一.常用的集合方法 1.可遍历集合的常用方法 下表列出了Traverable在所有集合常用的方法.接下来的符号: c代表一个集合 f代表一个函数 p代表一个谓词 n代表一个数字 op代表一个简单的操作 ...
- 【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
原文链接: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 原文内容也一并附加在本文最 ...
- [Java核心技术]第九章-集合(Java集合框架、具体的集合、映射)
9.1Java集合框架 一些有的没的 可以使用接口类型存放集合的引用.一旦改变了想法,只需要在调用构造函数的地方做一处修改. add方法用于向集合添加元素,如果添加元素确实改变了集合就返回true. ...
- 背水一战 Windows 10 (22) - 绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合
[源码下载] 背水一战 Windows 10 (22) - 绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合 作 ...
- 【ASP.NET实战教程】ASP.NET实战教程大集合,各种项目实战集合
[ASP.NET实战教程]ASP.NET实战教程大集合,各种项目实战集合,希望大家可以好好学习教程中,有的比较老了,但是一直很经典!!!!论坛中很多小伙伴说.net没有实战教程学习,所以小编连夜搜集整 ...
随机推荐
- Apache HttpClient 4.5 在Springboot中使用
ConnectionRequestTimeout httpclient使用连接池来管理连接,这个时间就是从连接池获取连接的超时时间,可以想象下数据库连接池 ConnectTimeout 连接建立时间, ...
- 8-kubernetes-安全
kubernetes安全框架 访问K8S集群的资源需要过三关:认证.鉴权.准入控制,任意一个不通过都会失败 普通用户若要安全访问集群API server,往往需要证书.token或者用户名+密码,po ...
- 十一长假我肝了这本超硬核PDF,现决定开源!!
写在前面 在 [冰河技术] 微信公众号中的[互联网工程]专题,更新了不少文章,有些读者反馈说,在公众号中刷 历史文章不太方便,有时会忘记自己看到哪一篇了,当打开一篇文章时,似乎之前已经看过了,但就是不 ...
- 为什么在M3架构中 PC总是返回加4
由于CPU是3级流水线的方式运行.在执行第一条指令时候,已经对第二条指令译码,对第三条指令取值. PC总是指向正在取值的指令.由于在M3架构中,采用Thumb-2指令,每个指令占据2个字节,所以PC总 ...
- 实验四 CSS样式的应用
实验四 CSS样式的应用 注意:以下实验项目皆以本文件为操作对象,实验结果用记事本保留后预览,最后将添加的CSS代码转载到实验报告中 另本网页中蓝色加下划线的字即为默认的超链接样式 实验目的: 掌握 ...
- Spring系列 SpringMVC的请求与数据响应
Spring系列 SpringMVC的请求与数据响应 SpringMVC的数据响应 数据响应的方式 y以下案例均部署在Tomcat上,使用浏览器来访问一个简单的success.jsp页面来实现 Suc ...
- CLion 控制台输出内容乱码问题的解决方法
问题再现 #include "stdio.h" #include "stdlib.h" int main() { printf("嘤嘤嘤") ...
- Android开发还不会这些?如何面试拿高薪!
我所接触的Android开发者,百分之九十五以上 都遇到了以下几点致命弱点! 如果这些问题也是阻止你升职加薪,跳槽大厂的阻碍. 那么我确信可以帮你突破瓶颈! 群内有许多来自一线的技术大牛,也有在小厂或 ...
- spring-boot-route(十七)使用aop记录操作日志
在上一章内容中--使用logback管理日志,我们详细讲述了如何将日志生成文件进行存储.但是在实际开发中,使用文件存储日志用来快速查询问题并不是最方便的,一个优秀系统除了日志文件还需要将操作日志进行持 ...
- Linux操作系统的基本介绍
01 操作系统的概述介绍 操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序.操作系统需要处理如管理与配置内存.决定系统资源供需的优先次序.控制输入设备与输出 ...