『无为则无心』Python序列 — 22、Python集合及其常用操作
1、Python集合特点
- 集合可以对自己的元素去掉重复数据。
- 集合元素的展示顺序和写入顺序不一致,所以集合元素是无序的,故集合也不支持下标。
- 集合是可变类型数据。
- 集合中只能存储不可变对象。
2、Python集合的创建
创建集合使用{}
或set()
, 但是如果要创建空集合只能使用set()
,因为{}
用来创建空字典了。
# 1.创建有数据的集合
# 可以看到集合是无序的。
# 结果:{40, 10, 50, 20, 30}
s1 = {10, 20, 30, 40, 50}
print(s1)
# 2.创建一个有重复元素的集合
# 可以看到结果,集合有去重的功能。
# 结果:{40, 10, 50, 20, 30}
s2 = {10, 30, 20, 10, 30, 40, 30, 50}
print(s2)
# 3.把一个序列作为数据,创建一个集合
# 结果去重,且无序
# 结果:{'f', 'g', 'e', 'd', 'a', 'c', 'b'}
s3 = set('abcdefga')
print(s3)
# 结果:{'猪八戒', '孙悟空', '沙和尚', '唐僧'}
name_list = ['孙悟空','猪八戒','沙和尚','唐僧']
s4 = set(name_list)
print(s4)
# 4.使用set()方法创建一个空集合
s5 = set()
print(s5) # set()
print(type(s5)) # <class 'set'>
# 5.不能使用{}创建空集合,创建出来的是一个字典。
s6 = {}
print(s6) # {}
print(type(s6)) # <class 'dict'>
# 6.集合中只能存储不可变对象。
# 结果:TypeError: unhashable type: 'list'
s = {[1,2,3],[4,6,7]}
# 存元组可以。不会报错
# 结果:{(4, 6, 7), (1, 2, 3)}
s = {(1, 2, 3), (4, 6, 7)}
print(s)
# 7.使用set()将字典转换为集合时,只会包含字典中的键
# 结果:{'c', 'a', 'b'}
s = set({'a': 1, 'b': 2, 'c': 3})
print(s)
3、操作集合常用API
(1)增加数据
@1、add()
方法
只能添加不可变类型数据,序列不行。
s1 = {10, 20}
# 1.向集合中添加元素
# 结果:{10, 20, 70}
s1.add(70)
# 2.集合有去重功能,向集合中添加重复元素,不和有任何操作。
# 结果:{10, 20, 70}
s1.add(10)
print(s1)
# 3.他通过add()方法,向集合中添加序列,会报错
# 结果:TypeError: unhashable type: 'list'
print(s1)
s1.add([666, 888, 999])
因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进行任何操作。
@2、update()
方法
update()
方法可以向集合中添加序列。
# 结果:{100, 10, 20, 200}
s1 = {10, 20}
s1.update([100, 200])
print(s1)
# 通过`update()`方法向集合添加基本类型数据,会抛异常。
# 结果:TypeError: 'int' object is not iterable
s1.update(100)
print(s1)
# update()可以传递字典作为参数,只会使用字典的键
# 结果:{100, 1000, 10, 20}
s1 = {10, 20}
s1.update({100: 'cd', 1000: 'ef'})
print(s1)
(2)删除数据
@1、remove()
方法
remove()
方法,删除集合中的指定数据,如果数据不存在则报错。
# 1.删除集合中指定元素
# 结果:{20, 30}
s1 = {10, 20, 30}
s1.remove(10)
print(s1)
# 2.删除的元素不存在于集合中,则会报错。
# 结果:KeyError: 40
s1.remove(40)
print(s1)
@2、discard()
方法
discard()
方法,删除集合中的指定数据,如果数据不存在也不会报错。
# 1.删除集合中指定元素
# 结果:{20, 30}
s1 = {10, 20, 30}
s1.discard(10)
print(s1)
# 2.删除的元素不存在于集合中,不会报错。
# 结果:{10, 20, 30}
s1.discard(40)
print(s1)
@3、pop()
方法
pop()
方法,随机删除集合中的某个数据,并返回这个数据。
"""
输出结果:
删除的数据为: 40
{10, 50, 20, 30}
"""
s1 = {10, 20, 30, 40, 50}
del_num = s1.pop()
print('删除的数据为:', del_num)
print(s1)
@4、claer()
方法
清空集合,用法同列表、字典。
"""
输出结果:
清空前: {888, 666, 999}
清空后: set()
"""
name_set = {666, 888, 999}
print("清空前:", name_set)
name_set.clear()
print("清空后:", name_set)
(3)查找数据
你无法通过索引来查找集合中的数据。
in
:判断数据在集合序列not in
:判断数据不在集合序列
s1 = {10, 20, 30, 40, 50}
print(10 in s1) # True
print(10 not in s1) # False
print(100 in s1) # False
print(100 not in s1) # True
(4)copy()
复制
浅复制,同字典,具体说明请点击查看字典的copy()
方法。
4、集合的运算
示例如下:
# 在对集合做运算时,不会影响原来的集合,而是返回一个运算结果。
# 创建两个集合
s = {1,2,3,4,5}
s2 = {3,4,5,6,7}
# 1.& 交集运算
# 结果:{3, 4, 5}
result = s & s2
# 2.| 并集运算
# 结果:{1,2,3,4,5,6,7}
result = s | s2 #
# 3.- 差集:只在A集合里有的,B集合里没有
# 结果:{1, 2}
result = s - s2
# 4.^ 异或集 获取只在一个集合中出现的元素
# 就是两个集合中不重叠的部分。
# 结果:{1, 2, 6, 7}
result = s ^ s2
# 5.<= 检查一个集合是否是另一个集合的子集
# 如果a集合中的元素全部都在b集合中出现,
# 那么a集合就是b集合的子集,b集合是a集合超集。
a = {1,2,3}
b = {1,2,3,4,5}
result = a <= b # True
result = {1,2,3} <= {1,2,3} # True
result = {1,2,3,4,5} <= {1,2,3} # False
# 6.< 检查一个集合是否是另一个集合的真子集
# 如果超集b中含有子集a中所有元素,
# 并且b中还有a中没有的元素,则b就是a的真超集,a是b的真子集。
result = {1,2,3} < {1,2,3} # False
result = {1,2,3} <= {1,2,3} # True
result = {1,2,3} < {1,2,3,4,5} # True
# >= 检查一个集合是否是另一个的超集
# > 检查一个集合是否是另一个的真超集
print('result =',result)
『无为则无心』Python序列 — 22、Python集合及其常用操作的更多相关文章
- 『无为则无心』Python序列 — 17、Python字符串操作常用API
目录 1.字符串的查找 @1.find()方法 @2.index()方法 @3.rfind()和rindex()方法 @4.count()方法 2.字符串的修改 @1.replace()方法 @2.s ...
- 『无为则无心』Python序列 — 18、Python列表概念及常用操作API
目录 1.列表的概念 (1)列表的定义 (2)列表的应用场景 (3)列表的定义格式 2.列表的常用操作 (1)列表的查找 1)通过下标查找 2)通过方法查找 3)判断是否存在 (2)列表的增加 @1. ...
- 『无为则无心』Python序列 — 23、Python序列的公共API
目录 1.运算符 @1.+加号 @2.*乘号 @3.in或not in 2.公共方法 @1.len()方法 @2.del和del() @3.max()方法 @4.min()方法 @5.range() ...
- 『无为则无心』Python序列 — 24、Python序列的推导式
目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...
- 『无为则无心』Python基础 — 12、Python运算符详细介绍
目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...
- 『无为则无心』Python基础 — 62、Python中自定义迭代器
目录 1.迭代器对象的创建 2.实际应用案例 3.总结: 1.迭代器对象的创建 迭代器是一种可以被遍历的对象,并且能够作用于next()函数,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问 ...
- 『无为则无心』Python基础 — 4、Python代码常用调试工具
目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...
- 『无为则无心』Python基础 — 6、Python的注释
目录 1.注释的作用 2.注释的分类 单行注释 多行注释 3.注释的注意事项 4.什么时候需要使用注释 5.总结 提示:完成了前面的准备工作,之后的文章开始介绍Python的基本语法了. Python ...
- 『无为则无心』Python基础 — 7、Python的变量
目录 1.变量的定义 2.Python变量说明 3.Python中定义变量 (1)定义语法 (2)标识符定义规则 (3)内置关键字 (4)标识符命名习惯 4.使用变量 1.变量的定义 程序中,数据都是 ...
- 『无为则无心』Python基础 — 10、Python字符串的格式化输出
目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...
随机推荐
- 关于UCOSII的学习资料
UCOSII学习资料: 在战舰的A盘资料包中 ->软件资料->ucosii 有一个叫做简易OS讲解的文档,此文从简单的OS将其,通俗易懂的讲解大体的OS运行原理,任务调度的实现过程,是入门 ...
- fcntl详解
功能描述:根据文件描述词来操作文件的特性. #include <unistd.h>#include <fcntl.h> int fcntl(int fd, int cmd); ...
- unittest的前置后置,pytest的fixture和共享机制conftest.py
Unittest setUp/tearDown setUp当中得到的变量,用self.xxx = value传递给测试用例 setUpClass/tearDownClass setupClass当中得 ...
- GPU上稀疏矩阵的基本线性代数
GPU上稀疏矩阵的基本线性代数 cuSPARSE库为稀疏矩阵提供了GPU加速的基本线性代数子例程,这些子例程的执行速度明显快于仅CPU替代方法.提供了可用于构建GPU加速求解器的功能.cuSPARSE ...
- Auto ML自动调参
Auto ML自动调参 本文介绍Auto ML自动调参的算法介绍及操作流程. 操作步骤 登录PAI控制台. 单击左侧导航栏的实验并选择某个实验. 本文以雾霾天气预测实验为例. 在实验画布区,单击左上角 ...
- gst-crypto GStreamer插件
gst-crypto GStreamer插件 内容 1. gst-crypto概述 1.1gst-crypto GStreamer插件功能 1.2用例范例 2. GStreamer插件支持 3. 在本 ...
- gpgpu-sim卡分配程序设计实例分析
gpgpu-sim卡分配程序设计实例分析 运行代码地址:https://github.com/gpgpu-sim/gpgpu-sim_distribution 一.概述 此文件包含有关安装.生成和运行 ...
- 如何使用TensorCores优化卷积
如何使用TensorCores优化卷积 本文将演示如何在TVM中使用TensorCores编写高性能的卷积计划.假设卷积的输入有大量数据.首先介绍如何在GPU上优化卷积. TensorCore简介 每 ...
- 用Microsoft DirectX光线跟踪改善渲染质量
用Microsoft DirectX光线跟踪改善渲染质量 Implementing Stochastic Levels of Detail with Microsoft DirectX Raytrac ...
- 35 张图带你 MySQL 调优
这是 MySQL 基础系列的第四篇文章,之前的三篇文章见如下链接 138 张图带你 MySQL 入门 47 张图带你 MySQL 进阶!!! 炸裂!MySQL 82 张图带你飞 一般传统互联网公司很少 ...