1、Python集合特点

  1. 集合可以对自己的元素去掉重复数据。
  2. 集合元素的展示顺序和写入顺序不一致,所以集合元素是无序的,故集合也不支持下标。
  3. 集合是可变类型数据。
  4. 集合中只能存储不可变对象。

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集合及其常用操作的更多相关文章

  1. 『无为则无心』Python序列 — 17、Python字符串操作常用API

    目录 1.字符串的查找 @1.find()方法 @2.index()方法 @3.rfind()和rindex()方法 @4.count()方法 2.字符串的修改 @1.replace()方法 @2.s ...

  2. 『无为则无心』Python序列 — 18、Python列表概念及常用操作API

    目录 1.列表的概念 (1)列表的定义 (2)列表的应用场景 (3)列表的定义格式 2.列表的常用操作 (1)列表的查找 1)通过下标查找 2)通过方法查找 3)判断是否存在 (2)列表的增加 @1. ...

  3. 『无为则无心』Python序列 — 23、Python序列的公共API

    目录 1.运算符 @1.+加号 @2.*乘号 @3.in或not in 2.公共方法 @1.len()方法 @2.del和del() @3.max()方法 @4.min()方法 @5.range() ...

  4. 『无为则无心』Python序列 — 24、Python序列的推导式

    目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...

  5. 『无为则无心』Python基础 — 12、Python运算符详细介绍

    目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...

  6. 『无为则无心』Python基础 — 62、Python中自定义迭代器

    目录 1.迭代器对象的创建 2.实际应用案例 3.总结: 1.迭代器对象的创建 迭代器是一种可以被遍历的对象,并且能够作用于next()函数,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问 ...

  7. 『无为则无心』Python基础 — 4、Python代码常用调试工具

    目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...

  8. 『无为则无心』Python基础 — 6、Python的注释

    目录 1.注释的作用 2.注释的分类 单行注释 多行注释 3.注释的注意事项 4.什么时候需要使用注释 5.总结 提示:完成了前面的准备工作,之后的文章开始介绍Python的基本语法了. Python ...

  9. 『无为则无心』Python基础 — 7、Python的变量

    目录 1.变量的定义 2.Python变量说明 3.Python中定义变量 (1)定义语法 (2)标识符定义规则 (3)内置关键字 (4)标识符命名习惯 4.使用变量 1.变量的定义 程序中,数据都是 ...

  10. 『无为则无心』Python基础 — 10、Python字符串的格式化输出

    目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...

随机推荐

  1. 关于UCOSII的学习资料

    UCOSII学习资料: 在战舰的A盘资料包中 ->软件资料->ucosii 有一个叫做简易OS讲解的文档,此文从简单的OS将其,通俗易懂的讲解大体的OS运行原理,任务调度的实现过程,是入门 ...

  2. fcntl详解

    功能描述:根据文件描述词来操作文件的特性. #include <unistd.h>#include <fcntl.h> int fcntl(int fd, int cmd);  ...

  3. unittest的前置后置,pytest的fixture和共享机制conftest.py

    Unittest setUp/tearDown setUp当中得到的变量,用self.xxx = value传递给测试用例 setUpClass/tearDownClass setupClass当中得 ...

  4. GPU上稀疏矩阵的基本线性代数

    GPU上稀疏矩阵的基本线性代数 cuSPARSE库为稀疏矩阵提供了GPU加速的基本线性代数子例程,这些子例程的执行速度明显快于仅CPU替代方法.提供了可用于构建GPU加速求解器的功能.cuSPARSE ...

  5. Auto ML自动调参

    Auto ML自动调参 本文介绍Auto ML自动调参的算法介绍及操作流程. 操作步骤 登录PAI控制台. 单击左侧导航栏的实验并选择某个实验. 本文以雾霾天气预测实验为例. 在实验画布区,单击左上角 ...

  6. gst-crypto GStreamer插件

    gst-crypto GStreamer插件 内容 1. gst-crypto概述 1.1gst-crypto GStreamer插件功能 1.2用例范例 2. GStreamer插件支持 3. 在本 ...

  7. gpgpu-sim卡分配程序设计实例分析

    gpgpu-sim卡分配程序设计实例分析 运行代码地址:https://github.com/gpgpu-sim/gpgpu-sim_distribution 一.概述 此文件包含有关安装.生成和运行 ...

  8. 如何使用TensorCores优化卷积

    如何使用TensorCores优化卷积 本文将演示如何在TVM中使用TensorCores编写高性能的卷积计划.假设卷积的输入有大量数据.首先介绍如何在GPU上优化卷积. TensorCore简介 每 ...

  9. 用Microsoft DirectX光线跟踪改善渲染质量

    用Microsoft DirectX光线跟踪改善渲染质量 Implementing Stochastic Levels of Detail with Microsoft DirectX Raytrac ...

  10. 35 张图带你 MySQL 调优

    这是 MySQL 基础系列的第四篇文章,之前的三篇文章见如下链接 138 张图带你 MySQL 入门 47 张图带你 MySQL 进阶!!! 炸裂!MySQL 82 张图带你飞 一般传统互联网公司很少 ...