集合(set)篇(一)

文章目录

  • 5.1 集合的创建
  • 5.2 交集
  • 5.3 ^ 对称差集
  • 5.4 - 差集
  • 5.5 并集
  • 5.6 <= 判断当前集合是否为另一个集合的子集
  • 5.7 ==
  • 5.8 >= 判断当前集合是否为另一个集合的超集

5.1 集合的创建

在Python中,集合(set)是一个无序的不重复元素序列。你可以使用大括号 {} 或者 set() 函数来创建一个集合。下面是一些创建集合的例子:

使用大括号 {} 创建集合:

# 创建一个空集合
empty_set = {}
print(empty_set)  # 输出: set()# 创建一个包含几个元素的集合
my_set = {1, 2, 3, 4}
print(my_set)  # 输出: {1, 2, 3, 4}# 集合中的元素必须是不可变类型,例如整数、字符串、元组等
# 下面的例子将引发一个错误,因为列表是可变的
# invalid_set = {[1, 2, 3]}  # TypeError: unhashable type: 'list'

使用 set() 函数创建集合:

# 创建一个空集合
empty_set = set()
print(empty_set)  # 输出: set()# 创建一个包含几个元素的集合
my_set = set([1, 2, 2, 3, 4, 4])  # 重复的元素会被自动移除
print(my_set)  # 输出: {1, 2, 3, 4}# 你也可以直接传递元素给set()函数,而不需要创建一个列表
another_set = set(1, 2, 3, 4)  # 错误用法,set()不接受多个位置参数
# 正确的用法是使用set()包裹一个可迭代对象(例如列表、元组等)
correct_set = set([1, 2, 3, 4])
print(correct_set)  # 输出: {1, 2, 3, 4}

请注意,集合是无序的,这意味着你不能依赖元素的插入顺序来遍历集合。此外,集合中的元素必须是可哈希的(hashable),这意味着它们必须是不可变的。因此,你不能在集合中直接存储列表或字典等可变对象。

集合在Python中主要用于成员关系测试和消除重复元素,它们也支持集合运算,如并集、交集、差集等

5.2 交集

在Python中,要计算两个集合(set)的交集,你可以使用&操作符或者intersection()方法。

使用&操作符计算交集:

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用 & 操作符计算交集
intersection = set1 & set2
print(intersection)  # 输出: {3, 4}

使用intersection()方法计算交集:

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用 intersection() 方法计算交集
intersection = set1.intersection(set2)
print(intersection)  # 输出: {3, 4}

这两种方法都会返回一个新的集合,其中包含了set1和set2中共有的元素。

需要注意的是,集合是无序的,因此交集中的元素顺序可能与原始集合中的顺序不同。此外,由于集合不包含重复元素,所以即使原始集合中有重复的元素,交集中也只会出现一次。

如果你想要计算多个集合的交集,你可以连续使用&操作符或者intersection()方法:

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
set3 = {4, 5, 7, 8}# 使用 & 操作符计算多个集合的交集
intersection = set1 & set2 & set3
print(intersection)  # 输出: {4}# 使用 intersection() 方法计算多个集合的交集
intersection = set1.intersection(set2, set3)
print(intersection)  # 输出: {4}

在这个例子中,set1、set2和set3的交集是{4},因为只有数字4同时出现在这三个集合中。

5.3 ^ 对称差集

在Python中,^ 符号用于表示集合的对称差集(Symmetric Difference),而不是差集(Difference)。对称差集包括在第一个集合或第二个集合中,但不同时出现在两个集合中的所有元素。

如果你想要计算两个集合的差集,你应该使用 - 符号或者 difference() 方法。但是,如果你想要计算对称差集,你可以使用 ^ 符号或者 symmetric_difference() 方法。

使用 ^ 符号计算对称差集:

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用 ^ 符号计算对称差集
symmetric_difference = set1 ^ set2
print(symmetric_difference)  # 输出: {1, 2, 5, 6}

使用 symmetric_difference() 方法计算对称差集:

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用 symmetric_difference() 方法计算对称差集
symmetric_difference = set1.symmetric_difference(set2)
print(symmetric_difference)  # 输出: {1, 2, 5, 6}

这两种方法都会返回一个新的集合,其中包含了在set1或set2中,但不同时出现在两个集合中的所有元素。

总结来说,- 或 difference() 用于计算差集,而 ^ 或 symmetric_difference() 用于计算对称差集。

5.4 - 差集

在Python中,使用-符号来表示集合的差集。差集运算将返回第一个集合中存在但不在第二个集合中的所有元素。

下面是一个使用-符号计算差集的例子:

# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用 - 符号计算差集
difference = set1 - set2# 输出差集结果
print(difference)  # 输出: {1, 2}

在这个例子中,set1和set2分别包含一些元素。通过执行set1 - set2,我们得到了一个新的集合difference,它只包含那些属于set1但不属于set2的元素。

同样地,你也可以使用difference()方法来计算差集:

# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用 difference() 方法计算差集
difference = set1.difference(set2)# 输出差集结果
print(difference)  # 输出: {1, 2}

这两种方式都会得到相同的结果,即差集{1, 2},因为这两个元素只存在于set1中,而不存在于set2中

5.5 并集

在Python中,你可以使用 | 符号来表示集合的并集。并集运算将返回两个集合中所有的元素,包括重复的元素只计算一次。

下面是一个使用 | 符号计算并集的例子:

# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用 | 符号计算并集
union = set1 | set2# 输出并集结果
print(union)  # 输出: {1, 2, 3, 4, 5, 6}

在这个例子中,set1 和 set2 分别包含一些元素。通过执行 set1 | set2,我们得到了一个新的集合 union,它包含了 set1 和 set2 中所有的元素。

同样地,你也可以使用 union() 方法来计算并集:

# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用 union() 方法计算并集
union = set1.union(set2)# 输出并集结果
print(union)  # 输出: {1, 2, 3, 4, 5, 6}

这两种方式都会得到相同的结果,即并集 {1, 2, 3, 4, 5, 6},因为这个集合包含了 set1 和 set2 中所有的元素,且没有重复。

5.6 <= 判断当前集合是否为另一个集合的子集

在Python中,你可以使用 <= 运算符来判断一个集合是否是另一个集合的子集。如果集合A是集合B的子集,那么集合A中的每一个元素都必须在集合B中。

下面是一个使用 <= 运算符来判断集合是否为子集的例子:

# 定义两个集合
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}# 使用 <= 运算符判断set1是否是set2的子集
is_subset = set1 <= set2# 输出判断结果
print(is_subset)  # 输出: True

在这个例子中,set1 包含元素 {1, 2, 3},而 set2 包含元素 {1, 2, 3, 4, 5}。因为 set1 中的所有元素都出现在 set2 中,所以 set1 是 set2 的子集。因此,set1 <= set2 的结果为 True。

如果你想要判断一个集合是否不是另一个集合的子集,你可以使用 not 关键字来取反:

# 判断set1是否不是set2的子集
is_not_subset = not (set1 <= set2)# 输出判断结果
print(is_not_subset)  # 输出: False

在这个例子中,set1 确实是 set2 的子集,所以 not (set1 <= set2) 的结果为 False。

5.7 ==

在Python中,== 是一个比较运算符,用于检查两个对象是否相等。对于集合(set)这种数据类型,== 运算符用于比较两个集合是否包含相同的元素。

如果两个集合具有相同的元素(不考虑元素的顺序),则这两个集合被认为是相等的。下面是一个简单的例子:

# 创建两个集合
set1 = {1, 2, 3}
set2 = {3, 2, 1}# 使用 == 运算符比较这两个集合
result = set1 == set2# 输出比较结果
print(result)  # 输出: True

在这个例子中,set1 和 set2 包含相同的元素,尽管元素的顺序不同,但它们仍然相等,因此 set1 == set2 的结果是 True。

集合的相等性比较不考虑元素的重复性,也就是说,集合中的元素必须是唯一的。如果两个集合包含相同的元素且每个元素只出现一次,则它们是相等的。

# 创建两个集合
set3 = {1, 2, 2, 3}
set4 = {1, 2, 3}# 使用 == 运算符比较这两个集合
result = set3 == set4# 输出比较结果
print(result)  # 输出: True

在这个例子中,set3 虽然包含了重复的元素2,但在转换为集合时,重复的元素会被自动移除,所以 set3 和 set4 实际上是相等的。

总之,对于集合,== 运算符用于检查两个集合是否包含完全相同的元素(不考虑元素的顺序和重复性)。

5.8 >= 判断当前集合是否为另一个集合的超集

在Python中,要判断一个集合是否是另一个集合的超集(superset),可以使用 >= 运算符。如果集合A包含集合B中的所有元素,那么集合A是集合B的超集。使用 >= 运算符时,如果左边的集合是右边的集合的超集,则表达式的结果为 True;否则为 False。

下面是一个例子:

# 创建两个集合
set_a = {1, 2, 3, 4}
set_b = {2, 3}# 使用 >= 运算符判断 set_a 是否是 set_b 的超集
is_superset = set_a >= set_b# 输出结果
print(is_superset)  # 输出: True

在这个例子中,set_a 包含 set_b 中的所有元素(2和3),所以 set_a 是 set_b 的超集,因此 set_a >= set_b 的结果是 True。

如果你想判断两个集合是否相等(即它们互为超集),你可以使用 == 运算符,或者同时检查两个方向的不等式:

# 判断两个集合是否相等
are_equal = set_a == set_b# 或者使用 >= 和 <= 运算符
are_equal_alternative = (set_a >= set_b) and (set_a <= set_b)# 输出结果
print(are_equal)         # 输出: False
print(are_equal_alternative)  # 输出: False

在这个例子中,set_a 和 set_b 不相等,所以 set_a == set_b 和 (set_a >= set_b) and (set_a <= set_b) 的结果都是 False。

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

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

相关文章

用BSP优化3D渲染

3D渲染引擎设计者面临的最大问题之一是可见性计算&#xff1a;只必须绘制可见的墙壁和物体&#xff0c;并且必须以正确的顺序绘制它们&#xff08;应该在远处的墙壁前面绘制近墙&#xff09; 。 更重要的是&#xff0c;对于游戏等应用程序来说&#xff0c;开发能够快速渲染场景…

Gin简介(Go web基础知识)

Gin简介 https://geektutu.com/post/quick-go-gin.html我是从这个网站上面摘录的&#xff0c;就是做个笔记&#xff0c;仅分享。膜拜极客兔兔大佬 Go特性&#xff1a; 快速&#xff1a;路由不使用反射&#xff0c;基于Radix树&#xff0c;内存占用少。 中间件&#xff1a;HT…

新概念英语1:Lesson11学习笔记

新概念英语1&#xff1a;Lesson11学习笔记 whose shirt is that?和whose is that shirt区别 “Whose shirt is that?” 和 “Whose is that shirt?” 这两个句子在意义上是相同的&#xff0c;都用于询问一个衬衫的所有者是谁。但在语法结构上存在一些细微的差异。 “Whos…

YOLO-v8-seg实例分割使用

最近需要实例分割完成一些任务&#xff0c;一直用的SAM(segment anything&#xff09;速度慢&#xff0c;找一个轻量分割模型。 1. YOLO-v8-seg使用 git clone https://github.com/ultralytics/ultralytics.git cd ultralytics vim run.py from ultralytics import YOLO# L…

【保姆级讲解C语言中的运算符的优先级】

C语言中的运算符的优先级 C语言中的运算符的优先级决定了表达式中运算符的计算顺序&#xff0c;下面列出了C语言中运算符的优先级&#xff0c;从最高到最低&#xff1a; 括号 ( )数组下标 []成员访问运算符 . 和 ->后缀递增 后缀递减 --前缀递增 前缀递减 --一元加减 -…

SSH 免密互信视频教程

上高速&#xff0c;B 站直达通道 https://www.bilibili.com/video/BV1L1421Q7t2/ SSH 免密互信视频教程 0、大前提&#xff0c;准备两台容器 cq-master1、cq-master2 配置 IP 地址、主机名映射 vim /etc/hosts 172.17.0.4 cq-master1 172.17.0.5 cq-master21、两台机器均设…

PTA7-2 括号匹配

检查一段C语言代码的小括号( )、 中括号 [ ] 和大括号{ } 是否匹配。 输入格式: 在一行中输入一段C语言代码&#xff0c;长度不超过1000个字符&#xff08;行末以换行符结束&#xff09;。 输出格式: 第一行输出左括号的数量和右括号的数量&#xff0c;中间以一个空格间隔。…

Socket.D v2.4.7 发布

Socket.D 是什么东东&#xff1f; 是基于"事件"和"语义消息""流"的网络应用协议。在微服务、移动应用、物联网等场景&#xff0c;可替代 http、websocket 等协议。支持 tcp, udp, ws, kcp 传输。协议特点可参考《官网介绍》。 目前&#xff1a…

Python虚拟环境conda的安装使用

文章目录 conda虚拟环境的详细步骤和注意事项&#xff1a;**安装Conda****创建Conda虚拟环境****激活Conda虚拟环境****安装Python包****管理Conda环境****其他优势与特性** 相较于venv&#xff0c;使用conda管理虚拟环境有以下优势&#xff1a;**性能****资源占用****其他性能…

nodejs安装使用React

1、react安装 首先&#xff0c;确保电脑上具备nodejs环境&#xff0c;之后用 winr 呼出控制台&#xff0c;输入 cmd 命令弹出cmd控制台&#xff08;小黑框&#xff09;之后在默认路径输入如下代码 npm i -g create-react-app //全局安装react环境无需选择特定文件夹安装成功后…

深度学习-2.9梯度不稳定和Glorot条件

梯度不稳定和Glorot条件 一、梯度消失和梯度爆炸 对于神经网络这个复杂系统来说&#xff0c;在模型训练过程中&#xff0c;一个最基础、同时也最常见的问题&#xff0c;就是梯度消失和梯度爆炸。 我们知道&#xff0c;神经网络在进行反向传播的过程中&#xff0c;各参数层的梯…

ADW300多功能无线计量仪表

仪表应用背景 电力运维行业&#xff1a;运维服务系统实时采集大量用户站的运行和动环数据&#xff0c;经专业数据分析&#xff0c;当用户站发生异常情况或运行故障时&#xff0c;及时反馈到运维指挥中心&#xff0c;并通过移动终端通知相应的运维工程师&#xff0c;指导现场作…

浅谈Javascript虚拟列表(virtaul list)改造成虚拟表格(virtaul table)的技术

前端加载百万条数据列表&#xff0c;如果采用真实的DOM插入100万个div&#xff08;或li&#xff09;标签&#xff0c;肯定是非常卡顿的。这就不得不使用虚拟列表技术方案&#xff0c;但是虚拟列表技术方案网上有很详细的实现方法&#xff0c;今天我就来谈谈根据网上的方案&…

ChatGPT:提升论文写作能力

ChatGPT无限次数:点击直达 ChatGPT&#xff1a;开启智能对话&#xff0c;提升论文写作能力 ChatGPT是一款强大的人工智能对话引擎&#xff0c;它不仅可以帮助用户进行智能对话&#xff0c;还能在论文写作中发挥重要作用。本文将探讨如何利用ChatGPT提升论文写作能力&#xff0c…

Educational Codeforces Round 163 (Rated for Div. 2)(A,B,C,D,E)

比赛链接 好忙好忙好忙&#xff0c;慢慢补老比赛的题解了。 这场没啥算法&#xff0c;全是思维。有也是BFS&#xff0c;屎。 A. Special Characters 题意&#xff1a; 您将得到一个整数 n n n 。 您的任务是构建一串大写的拉丁字母。此字符串中必须正好有 n n n 个特殊字…

Docker - 哲学 默认网络和 自定义网络 与 linux 网络类型 和 overlay2

默认网络&#xff1a;不指定 --nerwork 不指定 网络 run 一个容器时&#xff0c;会直接使用默认的网络桥接器 &#xff08;docker0&#xff09; 自定义网络&#xff1a;指定 --nerwork 让这两台容器互相通信 的前提 - 共享同一个网络 关于 ip addr 显示 ens160 储存驱动 ov…

入门linux之Ubuntu学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1、介绍Ubuntu2、虚拟机目录解析3、常用指令ls&#xff1a;罗列当前目录文件信息对ls -l 的结果解析1.第一个字符2.每三个字符&#xff08;第一个字符后&#x…

jmeter超高并发报错解决方法

1、比如jmeter设置并发量为5000&#xff0c;运行后报错socket closed。原因是客户端与服务端做了三次握手之后&#xff0c;后面不需要握手了&#xff0c;但是jmeter没有这个功能&#xff0c;5000个并发每次发接口请求都是独立的&#xff0c;jmeter端口处理不了这么大量的请求&a…

【嵌入式DIY实例】-DIY 灌水机

DIY 灌水机 文章目录 DIY 灌水机1、硬件准备2、YF-S201 霍尔效应水流量传感器介绍3、4x4矩阵键盘4、硬件接线5、代码实现在这个项目中,我们将使用流量传感器和 Arduino 构建一个水灌装机。用户使用 44 键盘输入液体总量。泵在收到用户输入后抽取准确数量的水。当准确数量完成后…

v-for=“item in arr“ 的理解

在 Vue.js 中&#xff0c;v-for 是一个指令&#xff0c;用于在模板中渲染一个列表的数据。v-for"item in arr" 这个语法中&#xff0c;item 和 arr 分别代表以下含义&#xff1a; item: item 是当前迭代到的数组元素或对象的别名。在每次迭代中&#xff0c;item 会被…