【深度学习】 Python 和 NumPy 系列教程(五):Python容器:3、集合Set详解(初始化、访问元素、常用操作、常用函数)
目录
一、前言
二、实验环境
三、Python容器(Containers)
0、容器介绍
1、列表(List)
2、元组(Tuple)
3、集合(Set)
1. 初始化
2. 访问集合元素
3. 常用操作
a. 添加单个元素(add)
b. 添加多个元素(update)
c. 删除
d. 判断元素是否存在于集合中
4. 常用函数
a. 交集
b. 并集
c. 差集
d. 对称差集
e. 总结
一、前言
Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。
Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:
- Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
- Numpy:数组、数组索引、数据类型、数组数学、广播
- Matplotlib:绘图,子图,图像
- IPython:创建笔记本,典型工作流程
二、实验环境
Python 3.7
运行下述命令检查Python版本
python --version
三、Python容器(Containers)
0、容器介绍
Python中的容器是用于存储和组织数据的对象。常见的容器包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)。
- 列表是有序的可变容器,可以包含不同类型的元素,使用方括号([])来创建。
my_list = [1, 2, 3, 'a', 'b', 'c']
- 元组是有序的不可变容器,也可以包含不同类型的元素,使用圆括号(())来创建。
my_tuple = (1, 2, 3, 'a', 'b', 'c')
- 集合是无序且不重复的容器,用于存储唯一的元素,使用大括号({})或者set()函数来创建。
my_set = {1, 2, 3, 'a', 'b', 'c'}
- 字典是无序的键值对容器,用于存储具有唯一键的值,使用花括号({})或者dict()函数来创建。
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
这些容器都提供了不同的方法和操作,用于对数据进行存储、访问和处理。可以根据具体的需求选择适合的容器类型。
1、列表(List)
【深度学习】 Python 和 NumPy 系列教程(三):Python容器:1、列表List详解(初始化、索引、切片、更新、删除、常用函数、拆包、遍历)_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132768246?spm=1001.2014.3001.5501
2、元组(Tuple)
【深度学习】 Python 和 NumPy 系列教程(四):Python容器:2、元组tuple详解(初始化、索引和切片、元组特性、常用操作、拆包、遍历)_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132777307?spm=1001.2014.3001.5501
3、集合(Set)
集合(Set)是一种常见的数据结构。集合是无序且包含唯一元素的容器。它的特点是不允许重复的元素,并且可以进行交集、并集、差集等各种集合操作。集合(Set)不支持直接的拆包操作,因为集合是无序的,无法通过索引来确定元素的位置。
1. 初始化
集合可以使用大括号{}
或set()
函数进行创建。
my_set = {1, 2, 3} # 使用大括号创建集合
my_set = set([1, 2, 3]) # 使用set()函数创建集合
2. 访问集合元素
与列表(List)和元组(Tuple)不同,集合中的元素是无序的,因此无法通过索引来访问集合中的元素。此外,集合中的元素必须是可哈希的(即不可变的),因为集合本身是基于哈希表实现的。我们可以使用循环或将集合转换为其他可索引的数据结构来访问元素:
a. 使用循环遍历集合中的元素
my_set = {1, 2, 3, 4, 5}
for element in my_set:print(element)
这将输出集合中的每个元素。
b. 转换为其他数据结构
将集合转换为列表(List)或元组(Tuple),然后通过索引访问元素。
my_set = {1, 2, 3, 4, 5}my_list = list(my_set)
print(my_list[0]) # 访问第一个元素my_tuple = tuple(my_set)
print(my_tuple[2]) # 访问第三个元素
3. 常用操作
a. 添加单个元素(add)
my_set.add(5) # 添加单个元素
b. 添加多个元素(update)
my_set.update([6, 7, 8]) # 添加多个元素
c. 删除
移除集合中的元素可以使用remove()
方法,如果元素不存在会引发KeyError
异常;或使用discard()
方法,如果元素不存在则不会引发异常。
my_set.remove(3) # 移除指定元素,如果不存在会引发KeyError异常
my_set.discard(4) # 移除指定元素,如果不存在不会引发异常
d. 判断元素是否存在于集合中
my_set = {1, 2, 3}
element = 3
if element in my_set:print("元素存在于集合中")
4. 常用函数
这些操作可以使用相应的方法(如intersection()
、union()
、difference()
、symmetric_difference()
)或运算符(如&
、|
、-
、^
)进行。
a. 交集
集合的交集是指包含同时存在于两个或多个集合中的所有元素的新集合。可以使用交集运算符(&
)或intersection()
方法来计算交集。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用交集运算符
intersection = set1 & set2
print(intersection)# 使用intersection()方法
intersection = set1.intersection(set2)
print(intersection)
输出结果为:
{3, 4}
b. 并集
集合的并集是指包含所有属于两个或多个集合的唯一元素的新集合。可以使用并集运算符(|
)或union()
方法来计算并集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 使用并集运算符
union = set1 | set2
print(union)# 使用union()方法
union = set1.union(set2)
print(union)
输出结果为:
{1, 2, 3, 4, 5}
c. 差集
集合的差集是指从一个集合中去除属于另一个集合的所有元素后得到的新集合。可以使用差集运算符(-
)或difference()
方法来计算差集。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5}# 使用差集运算符
difference = set1 - set2
print(difference)# 使用difference()方法
difference = set1.difference(set2)
print(difference)
输出结果为:
{1, 2}
d. 对称差集
集合的对称差集是指包含属于两个集合中的唯一元素,但不包含同时存在于两个集合中的元素的新集合。可以使用对称差集运算符(^
)或symmetric_difference()
方法来计算对称差集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 使用对称差集运算符
symmetric_difference = set1 ^ set2
print(symmetric_difference)# 使用symmetric_difference()方法
symmetric_difference = set1.symmetric_difference(set2)
print(symmetric_difference)
输出结果为:
{1, 2, 4, 5}
e. 总结
set1 = {1, 2, 3}
set2 = {3, 4, 5}intersection1 = set1.intersection(set2) # 交集
intersection2 = set1 & set2 # 交集union1 = set1.union(set2) # 并集
union2 = set1 | set2 # 并集difference1 = set1.difference(set2) # 差集
difference2 = set1 - set2 # 差集symmetric_difference1 = set1.symmetric_difference(set2) # 对称差集
symmetric_difference2 = set1 ^ set2 # 对称差集
相关文章:

【深度学习】 Python 和 NumPy 系列教程(五):Python容器:3、集合Set详解(初始化、访问元素、常用操作、常用函数)
目录 一、前言 二、实验环境 三、Python容器(Containers) 0、容器介绍 1、列表(List) 2、元组(Tuple) 3、集合(Set) 1. 初始化 2. 访问集合元素 3. 常用操作 a. 添加单个…...
单片机C语言实例:6、定时器的应用
一、定时器0控制LED闪烁 实例程序1: #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED P1^2; //定义LED端口/*------------------------------------------------定时器初始化子程序 …...

ChatGPT Prompting开发实战(五)
一、如何编写有效的prompt 对于大语言模型来说,编写出有效的prompt能够帮助模型更好地理解用户的意图(intents),生成针对用户提问来说是有效的答案,避免用户与模型之间来来回回对话多次但是用户不能从LLM那里得到有意义的反馈。本文通过具体…...

MySQL——DQL union合并、limit限制与DDL建表和删表
一、Union 合并 union:是实现两个查询结果的合并。 例如:当我们查询员工名字为manager 和 salesman的员工名字和 工作? select e.ename,e.job from emp e where e.jobmanager or e.job salesman; select e.ename,e.job from emp e where e.job in(man…...

Java“牵手”唯品会商品列表数据,关键词搜索唯品会商品数据接口,唯品会API申请指南
唯品会商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取唯品会商品列表和商品详情页面数据,您可以通过开放平台的接口或者直接访问唯品会商城的网页来获取商品详情信息。以下是两种常用方法的介…...

Springboot整合JWT完成验证登录
目录 一、引入依赖二、JwtUtil 代码解读三、LoginController 代码解读四、整体代码五、结果展示 一、引入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></depende…...

centos7 下使用docker安装常见的软件:Redis
关于docker的基础知识,请见《别在说自己不知道docker了,全文通俗易懂的给你说明白docker的基础与底层原理》 在自己学习的过程中经常会需要动手安装一下常见的工具,本篇就手把手带你用docker安装一遍。 jdk安装 如果先要更换之前的jdk从第…...

sql:SQL优化知识点记录(十五)
(1)MySQL主从复制 我们这里配置一Windows上的MySql做主机,Linux上的MySql做从机,搭建一主一从 测试以下是否能够拼通:从Linux上:167,连接Windows的165 从Windows的165 连接Linux上:…...

vue3+ts 分享海报
安装依赖1. npm install html2canvas --save<div class"flex-box"><div><div v-for"(item,index ) in from.list" :key"index" click"actvieFuntion(index)"><div>{{item}}</div><div :class"…...

Ubuntu23.10将推出全磁盘加密功能,提高系统安全性
Canonical 宣布其即将推出的 Ubuntu 23.10(Mantic Minotaur)将引入基于 TPM 的全磁盘加密的初步支持。这个特性将利用系统可信平台模块(TPM),在系统级别上进行全磁盘加密,从而提高系统的安全性。 但需要注…...
防火墙的设置主要是为了防范什么
防火墙的设置主要是为了防范网络攻击和数据泄露。随着互联网的普及和信息化的加速,网络安全问题越来越受到人们的关注。其中,防火墙是一种常见的网络安全设备,其设置的重要性也日益凸显。 防火墙的设置主要是为了防范什么 防火墙的设置主要目…...

Vim9和其他软件的文本复制、粘贴
大家都知道:在Vim9中使用y和p命令来进行文本的复制和粘贴,今天我来说一说Vim和其他软件之间的文本复制、粘贴操作。 Vim9和其他软件进行复制、粘贴,其原理就是通过系统剪贴板作为中介来执行操作。 一、从Vim9复制文本内容 按住鼠标左键滑出…...

MySQL学习5:事务、存储引擎
事务 简介 事务是一组数据库操作的执行单元,它要么完全执行,要么完全不执行。事务是确保数据库中的数据一致性和完整性的重要机制之一。 事务具有以下四个特性(称为ACID特性): 原子性(Atomicity…...

redis如何保证接口的幂等性
背景 如何防止接口中同样的数据提交,以及如何保证消息不被重复消费,这些都是shigen在学习的过程中遇到的问题。今天,趁着在学习redis的间隙,我写了一篇文章进行简单的实现。 注意:仅使用于单机的场景,对于…...

避坑之路 —— 前后端 json 的注意问题
当我们在进行开发项目的时候,在前后端需要进行数据之间的传输,那么就会需要到json。而json算是字符串中的一种 1.先说一下前端的, 其实这两种都是表示前端希望能收到后端json这样的数据格式,那么我们在后端就需要注意将数据进行转换为json进…...

[构建 Vue 组件库] 小尾巴 UI 组件库 —— 横向商品卡片(仿淘宝)
文章归档于:https://www.yuque.com/u27599042/row3c6 组件库地址 npm:https://www.npmjs.com/package/xwb-ui?activeTabreadmegitee:https://gitee.com/tongchaowei/xwb-ui 下载 npm i xwb-ui配置 按需导入 import {组件名 } from xwb-…...

【Python】Python实现五子棋游戏(带可视化界面)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...

用Maloja创建音乐收听统计数据
什么是 Maloja ? Maloja 是简单的自托管音乐记录数据库,用于创建个人收听统计数据。没有推荐,没有社交网络,没有废话。Maloja 是一个跟踪您一段时间内的收听习惯的工具。 官方演示站点:https://maloja.krateng.ch/ 导出…...

GRU门控循环单元
GRU 视频链接 https://www.bilibili.com/video/BV1Pk4y177Xg?p23&spm_id_frompageDriver&vd_source3b42b36e44d271f58e90f86679d77db7Zt—更新门 Rt—重置门 控制保存之前一层信息多,还是保留当前神经元得到的隐藏层的信息多。 Bi-GRU GRU比LSTM参数少 …...

使用Puppeteer构建博客内容的自动标签生成器
导语 标签是一种用于描述和分类博客内容的元数据,它可以帮助读者快速找到感兴趣的主题,也可以提高博客的搜索引擎优化(SEO)。然而,手动为每篇博客文章添加合适的标签是一件费时费力的工作,有时候也容易遗漏…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...