python基础-基本数据类型深入-2.2

目录

集合

集合的定义

集合操作

集合的内建函数

集合与内置函数

集合练习-1

集合练习-2

集合练习-3

集合

集合的定义

学习关于 Python 集的所有内容;如何创建它们、添加或删除其中的元素,以及在 Python 中对集合执行的所有操作。

Python 中的集合是什么?

集合是项目的无序集合。每个元素都是唯一的(没有重复项),并且必须是不可变的(不能更改)。

但是,集合本身是可变的。我们可以在其中添加或删除项目。

集合可用于执行数学集合运算,例如并集,交集,对称差等。

如何创建集合?

通过将所有项目(元素)放在大括号 {} 中并用逗号分隔或使用内置函数来创建集合 set()

它可以具有任意数量的项目,并且它们可以具有不同的类型(整数,浮点数,元组,字符串等)。但是集合不能具有可变元素(例如 list ,set 或 dictionary)作为其元素。

dic1 = {1, 2, 3}
dic2 = {1.0, (1, 2, 3), 'Hello'}
print(dic1)
print(dic2)输出:
{1, 2, 3}
{1.0, (1, 2, 3), 'Hello'}

# 无重复集合
my_set = {1,2,3,4,3,2}
print(my_set)# 我们可以从列表中生成集合
my_set = set([1,2,3,2])
print(my_set)输出:
{1, 2, 3, 4}
{1, 2, 3}

创建一个空集有点特殊。

空括号 {} 将在Python中创建一个空字典。为了建立一个没有任何元素的集合,我们使用没有任何参数的 set() 函数。

x = {} # 用{}初始化
print(type(x)) # 检查a的数据类型x = set() # 初始化使用 set()
print(type(x)) # 检查a的数据类型输出:
<class 'dict'>
<class 'set'>

集合操作

如何在 Python 中更改集合?

集合是可变的。但由于它们是无序的,因此索引没有意义。

我们无法使用索引或切片来访问或更改集合的元素,这是集合不支持的操作。

我们可以使用 add() 方法添加单个元素,使用 update() 方法添加多个元素。update() 方法可以采用元组,列表,字符串或其他集合作为其参数。在所有情况下,都避免重复。

# 初始化 my_set
my_set = {1,3}
print(my_set)# 增加一个元素
my_set.add(2)
print(my_set)# 增加多个元素
my_set.update([2,3,4])
print(my_set)# 增加 list、set、tuple
my_set.update([4,5], {1,6,8},(9,10))
print(my_set)输出:
{1, 3}
{1, 2, 3}
{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6, 8, 9, 10}

从集合中删除元素

可以使用 discard()remove() 方法从集合中删除特定项目。

两者之间的唯一区别是,如果使用 discard(),而项目不存在于集合中,则它保持不变。但是 remove() 在这种情况下会引发错误。

set_1 = {1,2,3,"hello"}
print(set_1.remove(1))
print(set_1)set_1.discard("hello")
print(set_1)输出:
None
{2, 3, 'hello'}
{2, 3}

同样,我们可以使用 pop() 方法删除并返回一个项目。

集合为无序,无法确定将弹出哪个项目。这是完全任意的。

我们还可以使用 clear() 方法删除集合中的所有项目。

set_2 = {"shell",2,5,"bash"}set_2.pop() # 使用pop方法删除一个元素,并且随机输出!
print(set_2)set_2.clear() #使用clear方法删除所有的元素
print(set_2)输出:
{2, 5, 'shell'}
set()

Python 集合操作

集合可用于执行数学集合运算,例如并集,交集,差和对称差。我们可以通过运算符或方法来实现。

集合并集

A 和 B 的并集是来自这两个集合的所有元素的集合。

并集是使用 | 操作符执行的。也可以使用 union() 方法来完成。

# 初始化 A 和 B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}# 使用 | 运算符
print(A | B)#使用union()方法进行并集操作
print(A.union(B))
print(B.union(A))输出:
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}

集合相交

A 和 B 的交集是在这两个集合中共有的一组元素。

交点使用 & 运算符执行。使用 intersection() 方法可以完成相同的操作。

x = {1,2,3,4,5,6}
y = {4,5,6,7,8,9}#使用&进行交集操作
print(x & y)#使用intersection()方法进行交集
print(x.intersection(y))
print(y.intersection(x))输出:
{4, 5, 6}
{4, 5, 6}
{4, 5, 6}

集合差异

A 和 B 的差 A - B 是仅在 A 中但不在 B 中的一组元素。类似地,B - A 是 B 中但不在 A 中的一组元素。

差异是使用 - 运算符执行的。使用 difference() 方法可以完成相同的操作。

x = {1,2,3,4,5,6}
y = {4,5,6,7,8,9}print(x - y)
print(x.difference(y))print(y - x)
print(y.difference(x))输出:
{1, 2, 3}
{1, 2, 3}
{8, 9, 7}
{8, 9, 7}

集合对称差异

A 和 B 的对称差异是 A 和 B 中的一组元素,但两者中的元素相同。

对称差使用 ^ 运算符执行。使用 symmetric_difference() 方法可以完成相同的操作。

x = {1,2,3,4,5,6}
y = {4,5,6,7,8,9}print(x ^ y)
print(y ^ x)print(x.symmetric_difference(y))
print(y.symmetric_difference(x))输出:
{1, 2, 3, 7, 8, 9}
{1, 2, 3, 7, 8, 9}
{1, 2, 3, 7, 8, 9}
{1, 2, 3, 7, 8, 9}

集合的内建函数

不同的 Python 集合方法

集合方法很多,上面已经使用了其中的一些方法。这是 set (集合)对象可用的所有方法的列表。

方法描述
add()将元素添加到集合中
clear()从集合中删除所有元素
copy()返回集合的副本
difference()返回两个或多个集合的差作为新集合
difference_update()从该集合中删除另一个集合的所有元素
discard()如果元素是成员,则从集合中删除它。(如果元素不在集合中,则不执行任何操作)
intersection()返回两个集合的交集作为新集合
intersection_update()用自身和另一个的交集更新集合
isdisjoint()如果两个集合的交点为空,则返回 True,否则返回 False。
issubset()返回 True 另一个集合是否包含此集合
issuperset()返回 True 此集合是否包含另一个集合
pop()删除并返回一个任意的 set 元素。如果集合是空的,调用 pop() 方法将会引发 KeyError 异常!
remove()从集合中删除一个元素。如果元素不是成员,则引发一个 KeyError
symmetric_difference()将两个集合的对称差作为新集合返回
symmetric_difference_update()用本身和另一个的对称差异更新一个集合
union()返回新集合中集合的并集
update()用自身和其他元素的并集更新集合

其他集合操作

集合会员资格测试

我们可以使用 in 关键字来测试项目是否存在于集合中。

# 初始化 my_set
my_set = set("apple")# 检查“a”是否存在
print('a' in my_set)# 检查“p”是否存在
print('p' not in my_set)输出:
True
False

遍历集合 使用 for 循环,我们可以遍历集合中的每个项目。(由于集合是无序的,运行结果顺序可能不同)

for x in set("hello"):print(x)输出:
h
o
e
l

集合与内置函数

内置函数如 all()any()enumerate()len()max()min()sort()sum() 等常用来与 set 一起执行不同的任务。

功能描述
all()如果集合的所有元素都为 True(或者集合为空),则返回 True。
any()如果集合中的任何元素为 True,则返回 True。 如果集合为空,则返回False。
enumerate()返回一个枚举对象。它包含成对的所有项的索引和值。
len()返回集合中的长度(项目数)。
max()返回集合中最大的项目。
min()返回集合中最小的项目。
sorted()从集合中的元素返回一个新的排序列表(不对集合本身进行排序)。
sum()返回集合中所有元素的总和。

Python Frozenset

frozenset 是 Python 中的一种数据类型,类似于 set,但具有不可变性,即一旦创建后不能被修改。与 set 不同,frozenset 是一种不可变集合。

set 类型不同,frozenset 类型的对象可以作为字典的 key,也可以作为另一个集合的元素,这是因为 frozenset 是不可变的,具有哈希值,可以进行哈希运算。

可以使用函数 Frozenset() 创建 Frozensets 。

此数据类型支持的方法,如 copy()difference()intersection()isdisjoint()issubset()issuperset()symmetric_difference()union()。由于不可变,因此没有添加或删除元素的方法。

# 初始化 A 和 B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])print(A.isdisjoint(B)) # (使用isdisjoint()函数来判断两个集合是否存在交集,如果存在返回false,反之返回true!)
print(A.difference(B)) # (差集)
print(A | B) # union()输出:
False
frozenset({1, 2})
frozenset({1, 2, 3, 4, 5, 6})

集合练习-1
集合中最大的元素描述
输入一个非空集合 my_set,输出 my_set 中最大的元素。
my_set = eval(input())'''
print(max(my_set))
# 直接使用max函数!
''''''
print(sorted(my_set)[-1])
使用 sorted(my_set) 对集合中的元素进行排序,并取最后一个元素(即最大值),最后将其打印出来!
'''多种解法

集合练习-2
集合运算描述
给你三个集合 my_dict1、my_dict2 和 my_dict3,输出在前两个集合中都存在,但不在第三个集合中的元素个数。
my_set1 = eval(input())
my_set2 = eval(input())
my_set3 = eval(input())
'''
意思就是求set1和set2的交集,再求与set3的差集!(输出差集的个数)
'''
print(len((my_set1 & my_set2) - my_set3))

集合练习-3
集合中绝对值小于 10 的元素之和描述
给你一个整数集合 my_set,输出集合中绝对值小于 10 的元素之和。
my_set = eval(input())
sum_abs_lt_10 = sum(x for x in my_set if abs(x) < 10)
print(sum_abs_lt_10)'''
这段代码实现了以下功能:1. eval(input()): 通过 input() 函数提示用户输入一个表达式,然后 eval() 函数将这个表达式作为 Python 代码进行求值,得到一个集合对象并将其赋值给变量 `my_set`。
用户输入的表达式应该是一个包含整数元素的集合,例如 `{1, 2, 3, 4, 5}`。2. sum(x for x in my_set if abs(x) < 10): 这段代码使用列表推导式来计算集合 `my_set` 中绝对值小于 10 的元素之和。具体地,对于集合 `my_set` 中的每个元素 `x`,
只有当 `x` 的绝对值小于 10 时,才将这个 `x` 累加到求和结果中。3. print(sum_abs_lt_10): 最后,将上一步计算得到的绝对值小于 10 的元素之和打印输出。
'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握Go语言:探索Go语言中的变量,灵活性与可读性的完美结合(4)

想要编写简洁高效的Go语言代码吗&#xff1f;掌握变量的使用是关键&#xff01;Go语言的变量声明方式多样&#xff0c;包括var关键字和短变量声明&#xff0c;同时支持类型推断&#xff0c;让代码更加清晰易读。 变量声明方式 在Go语言中&#xff0c;变量的声明方式有两种&am…

少儿编程 中国电子学会C++等级考试一级历年真题答案解析【持续更新 已更新82题】

C 等级考试一级考纲说明 一、能力目标 通过本级考核的学生&#xff0c;能对 C 语言有基本的了解&#xff0c;会使用顺序结构、选择结构、循环结构编写程序&#xff0c;具体用计算思维的方式解决简单的问题。 二、考核目标 考核内容是根据软件开发所需要的技能和知识&#x…

Leetcode 3071. Minimum Operations to Write the Letter Y on a Grid

Leetcode 3071. Minimum Operations to Write the Letter Y on a Grid 1. 解题思路2. 代码实现 题目链接&#xff1a;3071. Minimum Operations to Write the Letter Y on a Grid 1. 解题思路 这一题思路上也是比较直接的&#xff0c;就是首先找到这个Y字符&#xff0c;然后…

单词规律00

题目链接 单词规律 题目描述 注意点 pattern只包含小写英文字母s只包含小写英文字母和 ’ ’s不包含任何前导或尾随对空格s中每个单词都被 单个空格 分隔 解答思路 本题与上一次同构字符串类似&#xff0c;思路可以参照同构字符串 代码 class Solution {public boolean …

工作流/任务卸载相关开源论文分享

decima-sim 概述&#xff1a; 图神经网络强化学习处理多工作流 用的spark的仿真环境&#xff0c;mit的论文&#xff0c;价值很高&#xff0c;高被引&#xff1a;663仓库地址&#xff1a;https://github.com/hongzimao/decima-sim论文&#xff1a;https://web.mit.edu/decima/co…

企业财务规划的未来:自动化智能化如何推动全面预算管理

随着自动化和智能化对企业的影响日益明显&#xff0c;了解和接受那些有可能改变企业财务规划的技术变得愈发重要。新兴技术是推动企业增长和业务生产的中坚力量。作为企业财务专业人员&#xff0c;熟悉技术能够帮助他们了解企业的未来价值&#xff0c;从而更好的领导团队。数智…

springboot支持的常用日志框架介绍

日志系统是计算机系统中用于记录和跟踪事件、错误和信息的软件组件。在软件开发和维护过程中&#xff0c;日志系统起着至关重要的作用。它可以帮助开发人员了解软件的运行情况&#xff0c;快速定位和解决问题。本文将从以下几个方面介绍日志系统&#xff1a;日志系统概述、Spri…

Mybatis plus拓展功能-枚举处理器

目录 1 前言 2 使用方法 2.1 在application.yml中添加配置 2.2 定义枚举类 2.3 在实体类和赋值时中使用 1 前言 在我们的开发过程中&#xff0c;常常需要用一些数字来表示状态。比如说&#xff1a;1-正常&#xff0c;0-冻结。然而这样并不能做到见名知意&#xff0c;特别是…

HTML最强入门学习笔记+GitHub小项目源码

HTML学习笔记 GitHub项目链接: 点我跳转GitHub 本博客采用markdown编写&#xff0c;上面这个链接跳转就是采用了html的<a></a>的代码设计的跳转提示~ 1.创建文件可以使用 ! 在VSCode中进行快速补全从而生成一整个HTML结构 HTML组成 <!DOCTYPE html><htm…

vscode——远端配置及一些问题解决

vscode——远端配置 安装Remote -SSH插件配置config本地变化一些问题缺失核心关闭vscode自动更新 尝试写入管道不存在hostname -I 查出来的ip连不上 我们之前大概了解了vscode的本地设置&#xff0c;我们之前提过&#xff0c;vscode是一款编辑器&#xff0c;在文本编辑方面有着…

Windows安装Neo4j数据库教程(3.X版本)

安装java的jdk&#xff08;jdk1.8仅支持Neo4j 3.X版本&#xff09;去 Index of /doc/neo4j/ 下载目标版本的Windows zip安装包将安装包解压到任意目录&#xff0c;并记住解压后带版本号的文件夹路径添加系统环境变量&#xff0c;变量名&#xff1a;NEO4J_HOME&#xff0c;变量值…

程序员的金三银四求职宝典:如何在关键时期脱颖而出?

个人主页&#xff1a;17_Kevin-CSDN博客 随着春天的脚步渐近&#xff0c;程序员们的求职热潮也随之而来。在这个被称为“金三银四”的招聘季&#xff0c;如何从众多求职者中脱颖而出&#xff0c;成为了许多程序员关注的焦点。本文将为你提供一份全面的求职宝典&#xff0c;助你…

前端架构: 脚手架通用框架封装之CommonJS和ESM混合开发兼容解决(教程五)

CommonJS 和 ESModule 混合开发 接上文&#xff0c;仍旧在 abc-cli 项目中参考&#xff1a;https://blog.csdn.net/Tyro_java/article/details/136433159现在要在脚手架项目中安装 chalk 依赖&#xff0c;因为在 abc-cli 项目几乎都是 CommonJS的实现而 chalk 这个依赖源码是基…

彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

自主导航是机器人与自动驾驶的核心功能&#xff0c;而SLAM技术是实现自主导航的前提与关键。现有的机器人与自动驾驶车辆往往会安装激光雷达&#xff0c;相机&#xff0c;IMU&#xff0c;GPS等多种模态的传感器&#xff0c;而且已有许多优秀的激光SLAM与视觉SLAM算法。但是每种…

获取wifi内容信息(仅供学习使用,勿作他用)

文章目录 背景代码实现槽点槽点 1槽点2总结背景 上一篇文章我们讲解学习了密码字典生成,下面我们来看一下如何获取wifi信息 代码实现 下面代码,附带注释,可以很清晰的看明白每一行代码具体是什么含义,通俗易通的变量定义,已经函数调用。如有任何不明白的地方可以随时联…

曲线生成 | 图解Dubins曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是Dubins曲线&#xff1f;2 Dubins曲线原理2.1 坐标变换2.2 单步运动公式2.3 曲线模式 3 Dubins曲线生成算法4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、…

c语言:转移表的实现

Hello,宝子们&#xff01;今天我们来模拟实现一下我们生活中的应用最频繁的工具&#xff1a;计算器&#xff0c;实现计算器有三种方式。 废话不多说&#xff0c;直接上代码&#xff0c;计算器的一般实现&#xff1a; #include <stdio.h> int add(int a, int b)//加法函数…

Foxmail快捷键设置问题

当快捷键设置错误时不会生效&#xff0c;原来的快捷键仍有效&#xff0c;即使禁用快捷键功能&#xff0c;原先快捷键仍有效。正确的快捷键&#xff1a; 1. 不能是空&#xff08;NULL&#xff09; 2. 应该设置按键值只有一个的键盘按钮。

力扣字符串篇

以下解题思路来自代码随想录以及官方题解。 文章目录 344.反转字符串541.反转字符串||151.反转字符串中的单词28.找出字符串中第一个匹配项的下标459.重复的字符串 344.反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给…

怎样查询到pycharm终端中执行过的命令?

pycharm终端中记录了曾经运行过的命令&#xff0c;怎样才能查询到全部曾经运行过的命令呢&#xff1f; 怎样查询到pycharm终端中执行过的命令&#xff1f;