六、Python集合定义和基本操作方法
一、集合的定义方法及特点
1、特点:
(1)由不同元素组成
#集合由不同元素构成
s={1,2,3,3,4,3,3,}
print(s)#运行结果:{1, 2, 3, 4}
(2)集合无序
#集合无序
s={'lilei','liuhua','alax','bob','bbb','bob'}
print(s)#运行结果:{'bob', 'liuhua', 'bbb', 'alax', 'lilei'}
(3)集合只能存放数字、字符串和元祖(即不可变类型)
#集合只能存放不可变类型
s={'alax',12,[1,2],('bab')}#[1,2]为列表类型
print(s)
运行结果:

2、定义方式
类型一:s={ }
类型二:s=set( )
s=set('hel')
print(s)#输出结果:{'h', 'l', 'e'}
二、集合的内置方法
1、.add( ) 添加(不可添加相同元素)
#添加
s1={1,2,3}
s1.add('alax')
print(s1)#输出结果:{1, 2, 3, 'alax'}
s2={1,2,3}
s2.add(3)
print(s2)#输出结果:{1, 2, 3}
2、.clear( ) 清空、.copy( ) 拷贝
#清空、拷贝
s={1,2,3}
s1={'baba'}
s.clear()
print(s)#输出结果:set()
s1.copy()
print(s1)#输出结果:{'baba'}
3、删除 .pop( ) 随机删除 .remove( )指定删除——>元素不存在会报错 .discard( )指定删除——>元素不存在不会报错
#删除
s1={'ax',1,2,3}
s1.pop()
print(s1)#运行结果:{1, 'ax', 2}
s2={'ax',1,2,3}
s2.remove('ax')
print(s2)#运行结果:{1, 2, 3}
#s2.remove('axxx')
#print(s2)#不存在,运行结果报错
s3={'ax',1,2,3}
s3.discard('axxxx')
print(s3)#运行结果:{1, 2, 3, 'ax'},不存在但是不报错
二、集合关系运算、交叉,并集
1、基本关系运算
现在我们举一个例子
例:现在有同学'bob','alax','zh'学习Python,有同学'bob','zh'学习Linux,用列表统计处即学习Python也学习Linux的同学名单。
解答:此题使用列表解决有三种写法,如下所示:
#列表举例
python_l=['bob','alax','zh']
linux_l=['zh','bob'] # #方法一:
# for i in python_l:
# for j in linux_l:
# if i==j:
# print(i)#运行结果:['bob', 'zh'] # #方法二:
# for name_l in python_l:
# if name_l in linux_l:
# print(name_l)#运行结果:['bob', 'zh'] #方法三:
python_l_and_linux_l=[]
for name_l in python_l:
if name_l in linux_l:
python_l_and_linux_l.append(name_l)
print(python_l_and_linux_l)#运行结果:['bob', 'zh']
现在我们用集合来解决此类问题:

如上图所示,求即学习Python_l和Linux_l的同学,即求交集部分
(1)交集,A.intersection(B) A与B的交集 或者 A&B
例题所示代码表示为:
python_l=['bob','alax','zh']
linux_l=['zh','bob']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
#——————求两个集合的交集————————
print(p_l.intersection(l_l))#运行结果:{'zh', 'bob'}
print(p_l&l_l)#运行结果:{'zh', 'bob'}
补充:交集更新 A.intersection_updata(B)
(2)并集,A.union(B) A与B的并集 或者A|B
#集合求并集
python_l=['bob','alax','zh']
linux_l=['zh','bob','hahah']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
#——————求两个集合的并集————————
print(p_l.union(l_l))#运行结果:{'alax', 'hahah', 'zh', 'bob'}
print(p_l|l_l)#运行结果:{'alax', 'hahah', 'zh', 'bob'}
(3)差集:即A中存在但是B中不存在的元素 A.diference(B) 或者 A-B或者B-A
#集合求差集
python_l=['bob','alax','zh']
linux_l=['zh','bob','hahah']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
#——————求两个集合的差集————————
print(p_l-l_l)#运行结果:{'alax'}
print(l_l-p_l)#运行结果:{'hahah'}
print(p_l.difference(l_l))#运行结果:{'alax'}
图解如下:

补充:差集更新
python_l=['bob','alax','zh','hghg']
linux_l=['zh','bob','hahah','hghg','hhhh']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
p_l.difference_update(l_l)
print(p_l)#运行结果:{'alax'}
(4)交叉补集 A.symmetric_difference(B) 或者 A^B
#交叉补集
python_l=['bob','alax','zh']
linux_l=['zh','bob','hahah']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
print(p_l.symmetric_difference(l_l))#运行结果:{'alax', 'hahah'}
print(p_l^l_l)#运行结果:{'alax', 'hahah'}
图解如下:

2、其他关系运算
(1)判断两个集合的交集是否为空 A.isdisjoint(B)
s1={'kk','bb','zz'}
s2={'kk','ss','aa'}
s3={1,2,3}
result1=s1.isdisjoint(s2)
print(result1)#运行结果:False ——> 即交集不为空
result2=s1.isdisjoint(s3)
print(result2)#运行结果:True -->即交集为空
(2)判断两个集合的包含关系
集合A>=B A.issubset(B) 集合A<=B A.issuperset(B)
s1={1,2,3}
s2={4,5,6,1,2,3}
result1=s1.issubset(s2)
print(result1)#运行结果:True
result2=s1.issuperset(s2)
print(result2)#运行结果:False
result3=s2.issuperset(s1)
print(result3)#运行结果:True
(3)更新 A.update(B)
s1={1,2,5}
s2={7,8}
s1.update(s2)
print(s1)#运行结果:{1, 2, 5, 7, 8}
三、补充:
集合是可变类型,当定义不可变集合时,可使用s=frozenset(**)
s=frozenset('hello')
print(s)#运行结果:frozenset({'l', 'o', 'h', 'e'})
#不可进行添加删除等操作
六、Python集合定义和基本操作方法的更多相关文章
- Python - 集合与元素之集合定义和基本操作方法
集合(set) 定义:由不同元素组成的集合,集合中是一组无序排列可hash的值(不可变的值)例如数字.字符串.元组,可以作为字典的key 定义集合: # 定义集合 s = {1, 2, 3, 3, 3 ...
- python集合set{ }、集合函数及集合的交、差、并
通过大括号括起来,用逗号分隔元素,特点 1.由不同元素组成,如果定义时存在相同元素,处理时会自动去重 2.无序 3.元素只能是不可变类型,即数字.字符串.布尔和元组,但集合本身可变 4.可直接定义集合 ...
- Python 集合set添加删除、交集、并集、集合操作符号
在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...
- [转]python集合set
Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...
- python集合与字典的用法
python集合与字典的用法 集合: 1.增加 add 2.删除 •del 删除集合 •discard(常用)删除集合中的元素 #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...
- 二十六. Python基础(26)--类的内置特殊属性和方法
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...
- 十六. Python基础(16)--内置函数-2
十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...
- Python数据定义
数据类型: 什么是数据? 在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字字母.符号和模拟量等的统称.现在计算机存储和处 ...
- Python 集合set()添加删除、交集、并集、集合操作详解
集合:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.每个元素的地位都是相同的,元素之间是无序的. 创建集合set python set类是在python的sets模块中,大家现在使 ...
随机推荐
- Java开发手册之工程结构
1.在线上生产环境,JVM 的 Xms 和 Xmx 设置一样大小的内存容量,避免在 GC 后调整堆大小带来的压力. 2.给 JVM 环境参数设置-XX:+HeapDumpOnOutOfMemoryEr ...
- Subline Text 3 安装
Subline Text 3 下载 下载链接 http://www.sublimetext.com/3 ,下载Subline Text3的安装包,这里以 64位的windows10为例,如果是其他操作 ...
- CTFshow萌新赛-萌新福利
下载链接文件 拿到show.bin文件 使用010Editor工具打开文件 做取反操作 取反后可以看到 把show.bin改为show.m4a 使用音频播放软件播放,即可得到flag
- oracle分区表分区栏位NULL值测试
实验在分区栏位为NULL时,分区表的反应 1.创建普通的分区表 CREATE TABLE MONKEY.TEST_PART_NULL_NORMAL ( ID NUMBER, ADD_DATE DATE ...
- 关于安装版JDK1.8 1.7更改多个JDK环境变量 不生效
配置maven(apache-maven-3.3.9)时提示异常:'mvn' 不是内部或外部命令,上网查找得知 它不支持jdk1.8,所以重新安装jdk1.7,后来就出现下面的问题 现象: 当使用安装 ...
- JAVA中@Override的含义
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例 ...
- win 10下Apache和PHP的安装配置
一.下载Apache 官网下载:https://httpd.apache.org/ 或者百度网盘链接:https://pan.baidu.com/s/17zVFNSfzzwDgFti_fboUSA 提 ...
- E1.获取Elixir/Erlang版本信息
E1.获取Elixir/Erlang版本信息 获取Elixir版本 直接在shel中打开iex (interactive shell),就可以查到具体的版本信息: iex Erlang/OTP 22 ...
- SpringBoot 自动配置:Spring Data JPA
前言 不知道从啥时候开始项目上就一直用MyBatis,其实我个人更新JPA些,因为JPA看起来OO的思想更强烈些,所以这才最近把JPA拿出来再看一看,使用起来也很简单,除了定义Entity实体外,声明 ...
- JMeter联机负载及问题解决
主控制机:存放JMeter脚本的机器叫做主控制机 负载机:被连接并用来运行脚本的机器叫做负载机 操作步骤: 1.修改主控制机上,JMeter安装目录bin目录下的JMeter.properties文件 ...