集合set-深入学习
集合set,无序,是不允许重复内容的,也就是不允许重复元素,如果有重复,会自动忽略,可接收可迭代类型 (一般用于需要判断和处理交集时候用到)
集合与字典的区别是,集合没有键只有值,字典是有键的字典是一对键值对
所以创建空集合不能用{}大括号,用大括号创建空集合默认会变成字典,如果需要创建空集合用set()
创建集合
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建集合
4 a = set()
5 a = {11,22,33,44,55,55}
6 print(a)
7 #打印出 {33, 11, 44, 22, 55}
集合的类库功能
add(
self
,
*
args,
*
*
kwargs)
"添加元素"(要添加的元素)
clear(
self
,
*
args,
*
*
kwargs)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建一个集合
4 se = {11,22,33,44}
5 #向集合里添加元素
6 se.add(55)
7 print(se)
8 #打印出 {33, 11, 44, 22, 55}
"清空元素"()
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建一个集合
4 se = {11,22,33,44}
5 #清空集合里的元素
6 se.clear()
7 print(se)
8 #打印出 空集合
difference(
self
,
*
args,
*
*
kwargs)
"查找出一个集合里存在,另外一个集合不存在的元素"(格式:查找集合.difference(被判断的集合)
)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {11,22,33,44}
5 b = {11,55,88,44}
6 #查找出a集合里存在,b集合不存在的元素
7 c = a.difference(b)
8 print(c)
9 #打印出 {33, 22}
difference_update(
self
,
*
args,
*
*
kwargs)
"从当前集合中删除和B中相同的元素"(b集合)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {11,22,33,44,999}
5 b = {11,55,88,44}
6 #从a集合中删除和b集合中相同的元素
7 a.difference_update(b)
8 print(a)
9 #打印出 {33, 22, 999}
discard(
self
,
*
args,
*
*
kwargs)
"移除指定元素,不存在不报错"(要移除的元素)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建一个集合
4 a = {11,22,33,44,999}
5 #移除指定元素,不存在不报错
6 a.discard(999)
7 print(a)
8 #打印出 {33, 11, 44, 22}
intersection(
self
,
*
args,
*
*
kwargs)
"交集,查找出a集合和b集合都存在的元素"(b集合)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {66,22,33,44,99}
5 b = {44,55,66,77,33}
6 #交集,查找出a集合和b集合都存在的元素
7 c = a.intersection(b)
8 print(c)
9 #打印出 {33, 66, 44}
intersection_update(
self
,
*
args,
*
*
kwargs)
"交集,查找出a集合和b集合都存在的元素,并重新更新到a集合"(b集合)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {66,22,33,44,99}
5 b = {44,55,66,77,33}
6 #交集,查找出a集合和b集合都存在的元素,并重新更新到a集合
7 a.intersection_update(b)
8 print(a)
9 #打印出 {33, 66, 44}
isdisjoint(
self
,
*
args,
*
*
kwargs)
"检查a集合和b集合是否有都存在的元素"(b集合)
返回布尔值:如果没有都存在的,返回True,否则返回False
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {66,22,33,44,99}
5 b = {44,55,66,77,33}
6 #检查a集合和b集合是否有都存在的元素,
7 c = a.isdisjoint(b)
8 print(c)
9 #打印出 False 说明有交集
issubset(
self
,
*
args,
*
*
kwargs)
"判断一个集合是否是另一个集合的子序列"(b集合)
是返回True 不是返回False
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {11,22,33,44}
5 b = {11,22}
6 #检查a集合是否是b集合的子序列,
7 c1 = a.issubset(b)
8 print(c1)
9 #检查b集合是否是a集合的子序列
10 c2 = b.issubset(a)
11 print(c2)
12 #打印出
13 #False 检查a集合是否是b集合的子序列,说明a集合不是b集合的子序列
14 #True 检查b集合是否是a集合的子序列,说明b集合是a集合的子序列
issuperset(
self
,
*
args,
*
*
kwargs)
"判断一个集合是否是另一个集合的父序列"(b集合)
是返回True 不是返回False
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #创建二个集合
4 a = {11,22,33,44}
5 b = {11,22}
6 #检查a集合是否是b集合的父序列,
7 c1 = a.issuperset(b)
8 print(c1)
9 #检查b集合是否是a集合的父序列
10 c2 = b.issuperset(a)
11 print(c2)
12 #打印出
13 #True 检查a集合是否是b集合的父序列,说明a集合是b集合的父序列
14 #False 检查b集合是否是a集合的父序列,说明b集合不是a集合的父序列
pop(
self
,
*
args,
*
*
kwargs)
"移除元素"()
一般默认移除第一个元素,只是集合有一套自己的元素排序规则,
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 #打印出集合,可以看到集合里的元素排序情况
5 print(a)
6 #移除集合里的元素,默认移除元素里的第一个排序元素
7 b = a.pop()
8 #打印出被移除的元素
9 print(b)
10 #打印出a集合被移除后剩下的所有元素
11 print(a)
12 #最后打印出
13 #{88, 66, 44, 77, 55}
14 #
15 #{66, 44, 77, 55}
remove(
self
,
*
args,
*
*
kwargs)
"移除指定元素,不存在保错"(要移除的元素)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 #打印出a集合
5 print(a)
6 #移除a集合里指定的元素
7 a.remove(44)
8 #打印a集合移除指定元素后,剩下的所有元素
9 print(a)
10 #最后输出
11 #{88, 66, 44, 77, 55}
12 #{88, 66, 77, 55}
复制代码
symmetric_difference(
self
,
*
args,
*
*
kwargs)
"对称差集,就是将两个集合里没有交集的元素重新组合成一个新的集合"(b集合)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 b = {44,55,11,22,33}
5 #对称差集,就是将两个集合里没有交集的元素重新组合成一个新的集合
6 c = a.symmetric_difference(b)
7 print(c)
8 #输出
9 #{33, 66, 11, 77, 22, 88}
symmetric_difference_update(
self
,
*
args,
*
*
kwargs)
"对称差集,并更新到a中,就是将两个集合里没有交集的元素重新组合更新给a集合"(b集合)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 b = {44,55,11,22,33}
5 #对称差集,并更新到a中,就是将两个集合里没有交集的元素重新组合更新给a集合
6 a.symmetric_difference_update(b)
7 print(a)
8 #输出
9 #{33, 66, 11, 77, 22, 88}
复制代码
union(
self
,
*
args,
*
*
kwargs)
"并集,将两个集合合并成一个新的集合,元素有重复的会自动忽略"(b集合)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 b = {44,55,11,22,33}
5 #并集,将两个集合合并成一个新的集合,元素有重复的会自动忽略只保留一次
6 c = a.union(b)
7 print(c)
8 #输出
9 #{33, 66, 11, 44, 77, 22, 55, 88}
update(
self
,
*
args,
*
*
kwargs)
"更新,将b集合更新到a集合,相当于合并"(b集合)
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 a = {44,55,66,77,88}
4 b = {44,55,11,22,33}
5 #更新,将b集合更新到a集合,相当于合并
6 a.update(b)
7 print(a)
8 #输出
9 #{33, 66, 11, 44, 77, 22, 55, 88}
集合set-深入学习的更多相关文章
- Java集合源码学习(五)几种常用集合类的比较
这篇笔记对几个常用的集合实现,从效率,线程安全和应用场景进行综合比较. >>ArrayList.LinkedList与Vector的对比 (1)相同和不同都实现了List接口,使用类似.V ...
- Java集合源码学习(三)LinkedList分析
前面学习了ArrayList的源码,数组是顺序存储结构,存储区间是连续的,占用内存严重,故空间复杂度很大.但数组的二分查找时间复杂度小,为O(1),数组的特点是寻址容易,插入和删除困难.今天学习另外的 ...
- Java集合源码学习(三)LinkedList
前面学习了ArrayList的源码,数组是顺序存储结构,存储区间是连续的,占用内存严重,故空间复杂度很大.但数组的二分查找时间复杂度小,为O(1),数组的特点是寻址容易,插入和删除困难.今天学习另外的 ...
- Java集合源码学习(四)HashMap分析
ArrayList.LinkedList和HashMap的源码是一起看的,横向对比吧,感觉对这三种数据结构的理解加深了很多. >>数组.链表和哈希表结构 数据结构中有数组和链表来实现对数据 ...
- Java集合源码学习(二)ArrayList分析
>>关于ArrayList ArrayList直接继承AbstractList,实现了List. RandomAccess.Cloneable.Serializable接口,为什么叫&qu ...
- Java集合源码学习(一)集合框架概览
>>集合框架 Java集合框架包含了大部分Java开发中用到的数据结构,主要包括List列表.Set集合.Map映射.迭代器(Iterator.Enumeration).工具类(Array ...
- Map集合的便利学习总结
1.Map提供了三种便利方式 1)遍历所有key. Set<K> keySet() 该方法会将当前Map中所有key存入一个Set集合后返回. 2)遍历所有的key-value对 Se ...
- Java集合源码学习(四)HashMap
一.数组.链表和哈希表结构 数据结构中有数组和链表来实现对数据的存储,这两者有不同的应用场景,数组的特点是:寻址容易,插入和删除困难:链表的特点是:寻址困难,插入和删除容易:哈希表的实现结合了这两点, ...
- Java集合源码学习(二)ArrayList
1.关于ArrayList ArrayList直接继承AbstractList,实现了List. RandomAccess.Cloneable.Serializable接口,为什么叫"Arr ...
- Java集合源码学习(一)Collection概览
1.集合框架 Java集合框架包含了大部分Java开发中用到的数据结构,主要包括List列表.Set集合.Map映射.迭代器(Iterator.Enumeration).工具类(Arrays.Coll ...
随机推荐
- Win10系列:VC++调用自定义组件3
(3)C++/CX调用WinRT组件 在解决方案资源管理器中右键点击解决方案图标,选择添加一个Visual C++的Windows应用商店的空白应用程序项目,并命名为FileCPP.接着右键点击Fil ...
- In-App Purchase iap 内付费 二次验证代码 (java 服务器端)
参考网址:https://blog.csdn.net/a351945755/article/details/22919533 package com.yichangmao.buyVerify.Comm ...
- Linux关机命令和重启命令
sync 将数据由内存同步到硬盘中. shutdown 关机指令,你可以man shutdown 来看一下帮助文档.例如你可以运行如下命令关机: shutdown mins’ 这个命令告诉大家,计算机 ...
- Python pycharm 引入需要使用的包
第一步 第二步 第三步
- ActiveMQ的P2P示例
ActiveMQ的P2P示例(点对点通信) (1)下载安装activemq,启动activeMQ. 详细步骤参考博客:http://www.cnblogs.com/DFX339/p/9050878.h ...
- shell脚本总结
1.变量 A: 定义变量A=1,只会对自己所在的shell进程有效 B: 定义变量export B=1,会对自己所在的shell进程及其子进程生效 C: 在script.sh脚本中定义的变量,在当前 ...
- codeforces1003D(贪心)
D. Coins and Queries time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- python+requests+excel 接口自动化框架
一.项目框架如图: 1.common :这个包都是一些公共的方法,如:手机号加解密,get/post接口请求的方法封装,接口鉴权,发邮件,读写excel文件方法等等 2.result:存放每次运行的l ...
- day 30 客户端获取cmd 命令的步骤
import subprocessimport structimport jsonfrom socket import *server=socket(AF_INET,SOCK_STREAM)serve ...
- 安装和配置HyperServer
总述 安装和配置HyperServer非常简单.直接. uniGUI安装程序在.. \uniGUI\HyperServer\bin\文件夹(\bin64\用于64位二进制文件)下分发了HyperSer ...