六、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模块中,大家现在使 ...
随机推荐
- gears-绕过rbash
0x00 信息收集 0x01 smb攻击 crunch 生成密码的一个软件 @%%,这个是给的密码参数. crunch 4 4 -t @%%, -o words 最小4位,最长 4位 fcrackzi ...
- SAP 修改表和表中数据
平时修改表中数据的方式有一下几种: 1.一般就是通过SE11或者是SE16进去,找到那条记录,然后将模式变成EDIT,然后修改保存. 2.通过SQL语句在程序中实现数据库表的修改操作 3.通过SE16 ...
- Java-web易混淆知识点整理
Java-web易混淆知识点 post和get区别 post: 数据不会显示在地址栏 安全 大小无限制 可以提交二进制文件 get: 数据显示在地址栏 不安全 get方式提交有大小限制(约4kb) 相 ...
- 001.IT运维面试问题-Linux基础
Linux基础 简述Linux主流的发行版? Redhat.CentOS.Fedora.SuSE.Debian.Ubuntu.FreeBSD等. 简述Linux启动过程? ⑴开机BIOS自检,加载硬盘 ...
- Socket的用法——NIO包下SocketChannel的用法 ———————————————— 版权声明:本文为CSDN博主「茶_小哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/ycgslh/article/details/79604074
服务端代码实现如下,其中包括一个静态内部类Handler来作为处理器,处理不同的操作.注意在遍历选择键集合时,没处理完一个操作,要将该请求在集合中移除./*模拟服务端-nio-Socket实现*/pu ...
- try-catch 异常捕获学习
#include <iostream> #include <string> #include <vector> #include <stdexcept> ...
- 慕课网金职位 Python工程师 百度网盘下载
百度网盘链接:https://pan.baidu.com/s/1xshLRO3ru0LAsQQ0pE67Qg 提取码:bh9f 如果失效加我微信:610060008[视频不加密,资料代码齐全,超清一手 ...
- CF42A
题意 给定两个序列 a 和 b. 序列 a 中的各个数之间的比例可以得出一个 x . 当 b 中比例满足 a 中比例,即 \(b_1\):\(b_2\):\(b_3\)-- \(=\) \(a_1\) ...
- 题解 CF620E 【New Year Tree】
有关dfs序的例题,需要有一定的位运算基础 题面 给定一个树,树上有颜色,将某一子树的颜色统一修改,求子树中颜色的数量 Solution 子树修改,子树求和,dfs序的知识(类似区间修改区间求和) 考 ...
- 通过Joomla的两次RCE漏洞看session反序列化
关于Session的前置知识: session 对数据的序列化方式一共有三种: 默认是 php 处理器:session.serialize_handler = php 效果如图: 通过|分割数据,|前 ...