当前位置: 首页 > news >正文

Python基础(十四、数据容器之集合Set)

文章目录

  • 一、集合语法
  • 二、集合的基本操作
    • 添加元素
    • 删除元素
    • 随机删除元素,可获得删除的值
    • 清空
    • 取出2个集合的差集
    • 消除2个集合的差集
    • 合并2个集合
    • 集合元素个数
    • 查询元素是否存在
  • 遍历集合
    • 集合的遍历

什么是数据容器?
数据容器是Python中用于存储和操作数据的对象。它们可以容纳不同类型的数据,如数字、字符串、列表、字典等,并提供了各种方法来访问和操作这些数据。

有哪些数据容器?
Python提供了几种常见的数据容器,包括列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。他们都能满足容纳多个元素的特点。
每种容器都有其独特的特点和用途,我们将逐一探索它们。

集合(Set)
集合是一个无序且唯一的数据容器,用于存储不重复的元素。它提供了高效的成员检查操作。例如,我们可以创建一个名为colors的集合来存储颜色:colors = {‘red’, ‘green’, ‘blue’}。

一、集合语法

在Python中,我们可以使用大括号 {} 或者 set() 函数来创建一个集合。
例如:

my_set = {1, 2, 3, 4, 5}

或者

my_set = set([1, 2, 3, 4, 5])

需要注意的是,如果要创建一个空集合,必须使用 set() 而不是 {},因为 {} 创建的是一个空字典。

与其他数据结构类似,我们可以使用索引来访问集合中的元素。但是需要注意的是,由于集合是无序的,所以不能保证元素在集合中的位置。因此,通常我们使用集合的成员运算符 in 来判断元素是否存在于集合中。例如:

my_set = {1, 2, 3, 4, 5}
print(3 in my_set)  # 输出:True

二、集合的基本操作

添加元素

向集合中添加元素非常简单,我们可以使用 add() 方法来添加单个元素,使用 update() 方法来添加多个元素。例如:

my_set = {1, 2, 3, 4, 5}
my_set.add(6)
print(my_set)  # 输出:{1, 2, 3, 4, 5, 6}my_set.update([7, 8, 9])
print(my_set)  # 输出:{1, 2, 3, 4, 5, 6, 7, 8, 9}

删除元素

从集合中删除元素同样很容易,我们可以使用 remove() 或者 discard() 方法来删除指定的元素。需要注意的是,remove() 方法在删除不存在的元素时会抛出异常,而 discard() 方法不会。例如:

my_set = {1, 2, 3, 4, 5}
my_set.remove(3)
print(my_set)  # 输出:{1, 2, 4, 5}my_set.discard(4)
print(my_set)  # 输出:{1, 2, 5}

随机删除元素,可获得删除的值

除了删除指定元素,我们还可以使用 pop() 方法随机删除并返回集合中的一个元素。例如:

my_set = {1, 2, 3, 4, 5}
removed_element = my_set.pop()
print(my_set)           # 输出:{2, 3, 4, 5}
print(removed_element)  # 输出:1

清空

使用clear()方法可以清空集合。例如:

my_set = {1, 2, 3, 4, 5}
my_set.clear()
print(my_set) # 输出:set()

取出2个集合的差集

集合1.difference(集合2)可取出两个集合的差集,集合1有而集合2没有。例如:

my_set = {1, 2, 3, 4, 5}
my_set2 = {1, 2, 5}
print(my_set.difference(my_set2)) # 输出:{3, 4}

消除2个集合的差集

集合1.difference_update(集合2),比对两个集合,删除与集合2相同的元素,集合2不变。例如:

my_set = {1, 2, 3, 4, 5}
my_set2 = {1, 2, 5}
my_set.difference_update(my_set2)
print(my_set) # 输出:{3, 4}
print(my_set2) # 输出:{1, 2, 5}

合并2个集合

集合1.union(集合2),合并成新集合,集合1和集合2不变。例如:

my_set = {1, 2, 3, 4, 5}
my_set2 = {1, 2, 5, 6}
my_set3 = my_set.union(my_set2)
print(my_set) # 输出:{1, 2, 3, 4, 5}
print(my_set2) # 输出:{1, 2, 5, 6}
print(my_set3) # 输出:{1, 2, 3, 4, 5, 6}

集合元素个数

len(集合),获取集合内的元素个数。例如:

my_set = {1, 2, 3, 4, 5}
print(len(my_set)) # 输出:5

查询元素是否存在

要查询集合中是否存在某个元素,我们可以使用成员运算符 in。例如:

my_set = {1, 2, 3, 4, 5}
print(3 in my_set)  # 输出:True
print(6 in my_set)  # 输出:False

遍历集合

遍历集合的方法和遍历列表类似,我们可以使用 for 循环来迭代集合中的每个元素。例如:

my_set = {1, 2, 3, 4, 5}
for item in my_set:print(item)

上述代码将依次打印出集合中的每个元素。

集合的遍历

下面是一些示例,演示了集合的各种操作:

my_set = {1, 2, 3, 4, 5}# 添加元素
my_set.add(6)
print(my_set)  # 输出:{1, 2, 3, 4, 5, 6}my_set.update([7, 8, 9])
print(my_set)  # 输出:{1, 2, 3, 4, 5, 6, 7, 8, 9}# 删除元素
my_set.remove(3)
print(my_set)  # 输出:{1, 2, 4, 5, 6, 7, 8, 9}my_set.discard(4)
print(my_set)  # 输出:{1, 2, 5, 6, 7, 8, 9}# 查询元素
print(3 in my_set)  # 输出:False
print(6 in my_set)  # 输出:True# 遍历集合
for item in my_set:print(item)

通过这些例子,你可以更好地理解集合的创建、修改、添加、删除、查询和遍历等基本操作。集合是Python中强大且常用的数据结构,它可以帮助我们高效地管理和操作不重复的元素。无论是去除重复项还是进行集合运算,集合都提供了很多方便的方法和操作符。

相关文章:

Python基础(十四、数据容器之集合Set)

文章目录 一、集合语法二、集合的基本操作添加元素删除元素随机删除元素,可获得删除的值清空取出2个集合的差集消除2个集合的差集合并2个集合集合元素个数查询元素是否存在 遍历集合集合的遍历 什么是数据容器? 数据容器是Python中用于存储和操作数据的对…...

OpenHarmony之HDF驱动框架

概述 HDF(Hardware Driver Foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理、驱动消息机制和配置管理。并以组件化驱动模型作为核心设计思路,让驱动开发和部署更加规范,旨在…...

深入浅出理解TensorFlow的padding填充算法

一、参考资料 notes_on_padding_2 二、TensorFlow的padding算法 本文以TensorFlow v2.14.0版本为例,介绍TensorFlow的padding算法。 tf.nn.conv2d # https://github.com/tensorflow/tensorflow/blob/v2.14.0/tensorflow/python/ops/nn_ops.py#L2257-L2361paddi…...

TDD-LTE 附着流程和去附着流程

目录 1. 附着流程 1.1. 正常附着流程 2. 异常附着流程 2.1 RRC建立失败 2.2 核心网拒绝 2.3 eNodeB未收到初始化上下文建立请求 2.4 RRC重配置请求丢失 2. 去附着流程 2.1 非关机去附着流程 2.1.1 连接态非关机去附着 2.1.2 空闲态非关机去附着 2.2 关机去附着流程 …...

[Angular] 笔记 23:Renderer2 - ElementRef 的生产版本

chatgpt: Renderer2 简介 在 Angular 中,Renderer2 是一个服务,用于处理 DOM 操作的抽象层。它提供了一种安全的方式来操作 DOM,同时与平台无关,有助于维护应用程序的跨浏览器兼容性和安全性。 Renderer2 的作用是在 Angular 组…...

WEB:探索开源OFD.js技术应用

1、简述 OFD.js 是一个由开源社区维护的 JavaScript 库,专注于在浏览器中渲染和处理 OFD 文件。OFD 作为一种开放式的文档格式,被广泛应用于电子政务、电子合同等领域。OFD.js 的出现为开发者提供了一个强大的工具,使得在前端实现 OFD 文件的…...

平方根,又叫二次方根,表示为〔√ ̄〕

正在加载中... 平方根,又叫二次方根,表示为〔√ ̄〕,如: 平方根,又叫二次方根,表示为〔√ ̄〕,如:数学语言为:√ ̄164。语言描述为&…...

Springer Latex正文参考文献样式改为数字

用过爱斯唯尔的latex,正文参考文献都是数字,第一次用Springer Latex的参考文献竟然是authoryear,如下: 将这种样式变回序号样式: (1)使用这个documentclass(此为双栏) …...

六、typescript泛型使用

1.identity函数,这个函数会返回任何传入它的值,可以看作是echo命令 function identity(arg:number):number {return arg }或 使用any类型会导致这个函数可以接收任何类型的参数,这样会丢失一些信息,传入与返回类型应该是相同的 有…...

【快慢指针】26.删除有序数组中的重复项

题目 法1&#xff1a;快慢指针 基础解法&#xff0c;必须掌握&#xff01;&#xff01;&#xff01; class Solution {public int removeDuplicates(int[] nums) {if (nums.length < 2) {return nums.length;}int slow 0, fast 1;while (fast < nums.length) {if (n…...

爬虫工作量由小到大的思维转变---<第三十一章 Scrapy Redis 初启动/conn说明书)>

前言: 重点在读connection.py的源码,这个组件主要是用来连接的; 因为连接都无法做到,后面想更改点自定义就白扯了; 正文: 翻译版的connection.py源码: import sys import six from scrapy.utils.misc import load_object from . import defaults# 快捷方式映射 设置名称 -&…...

2023年山东省职业院校技能大赛高职组“软件测试”赛项-单元测试报告答案

任务四 单元测试 目录 任务四 单元测试 题目1: 题目2: 题目3:<...

Matlab论文插图绘制模板第133期—函数极坐标折线图

在之前的文章中&#xff0c;分享了Matlab函数折线图的绘制模板&#xff1a; 函数三维折线图&#xff1a; 函数网格曲面图&#xff1a; 函数曲面图&#xff1a; 函数等高线图&#xff1a; 函数等高线填充图&#xff1a; 进一步&#xff0c;再来分享一下函数极坐标折线图。 先来…...

如何用 GPT 去分析Excel数据

背景 需要尝试分析 Excel 的内容&#xff0c;每月都需要进行相关的分析&#xff0c;固定化流程&#xff0c;因此尝试制作固化的脚本&#xff0c;方便后续的分析。 执行步骤 帮我写一段 python 代码&#xff0c;我需要区分一个.xlsx的数据。格式示例如下&#xff1a; ”这块自…...

力扣labuladong一刷day51天单调栈应用

力扣labuladong一刷day51天单调栈应用 一、239. 滑动窗口最大值 题目链接&#xff1a;https://leetcode.cn/problems/sliding-window-maximum/ 思路&#xff1a;滑动窗口最大值&#xff0c;既要维护加入的时间顺序&#xff0c;又要 class Solution {public int[] maxSliding…...

单片机相关知识点

在STM32上运行FreeRTOS&#xff0c;十分简练的小文章FreeRTOS&#xff08;STM32CubeMX&#xff09;_cubemx freertos-CSDN博客...

009:vue结合el-table实现表格行拖拽排序(基于sortablejs)

文章目录 1. 实现效果2. 安装 sortablejs 插件3. 完整组件代码4. 注意点 1. 实现效果 2. 安装 sortablejs 插件 sortablejs 更多用法 cnpm i --save sortablejs3. 完整组件代码 <template><div class"home"><div class"body"><el-ta…...

C语言KR圣经笔记 5.3指针和数组 5.4地址运算

5.3 指针和数组 在 C 语言中&#xff0c;指针和数组有着非常强的关联&#xff0c;强到应当把两者同时拿出来讨论。任何可以通过数组下标来做到的操作&#xff0c;也都能用指针来做到。而指针的版本通常会更快&#xff0c;但至少对初学者来说会更难理解。 如下声明 int a[10]…...

设计模式:简单工厂模式、工厂方法模式、抽象工厂模式

简单工厂模式、工厂方法模式、抽象工厂模式 1. 为什么需要工厂模式&#xff1f;2. 简单工厂模式2.1. 定义2.2. 代码实现2.3. 优点2.4. 缺点2.5. 适用场景 3. 工厂方法模式3.1. 有了简单工厂模式为什么还需要有工厂方法模式&#xff1f;3.2. 定义3.3. 代码实现3.4. 主要优点3.5.…...

Could not load library libcudnn_cnn_infer.so.8

报错&#xff1a; Could not load library libcudnn_cnn_infer.so.8. Error: /root/miniconda3/lib/python3.10/site-packages/torch/lib/libcudnn_cnn_infer.so.8: undefined symbol: _ZNK10cask_cudnn14BaseKernelInfo18minorCCVCompatibleENS_8SafeEnumINS_47ComputeCapa…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...