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

【深度学习】 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博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63834988/article/details/132768246?spm=1001.2014.3001.5501

2、元组(Tuple)

【深度学习】 Python 和 NumPy 系列教程(四):Python容器:2、元组tuple详解(初始化、索引和切片、元组特性、常用操作、拆包、遍历)_QomolangmaH的博客-CSDN博客icon-default.png?t=N7T8https://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&#xff1a; #include<reg52.h> //包含头文件&#xff0c;一般情况不需要改动&#xff0c;头文件包含特殊功能寄存器的定义sbit LED P1^2; //定义LED端口/*------------------------------------------------定时器初始化子程序 …...

ChatGPT Prompting开发实战(五)

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

MySQL——DQL union合并、limit限制与DDL建表和删表

一、Union 合并 union:是实现两个查询结果的合并。 例如&#xff1a;当我们查询员工名字为manager 和 salesman的员工名字和 工作&#xff1f; 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申请指南

唯品会商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取唯品会商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问唯品会商城的网页来获取商品详情信息。以下是两种常用方法的介…...

Springboot整合JWT完成验证登录

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

centos7 下使用docker安装常见的软件:Redis

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

sql:SQL优化知识点记录(十五)

&#xff08;1&#xff09;MySQL主从复制 我们这里配置一Windows上的MySql做主机&#xff0c;Linux上的MySql做从机&#xff0c;搭建一主一从 测试以下是否能够拼通&#xff1a;从Linux上&#xff1a;167&#xff0c;连接Windows的165 从Windows的165 连接Linux上&#xff1a;…...

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&#xff08;Mantic Minotaur&#xff09;将引入基于 TPM 的全磁盘加密的初步支持。这个特性将利用系统可信平台模块&#xff08;TPM&#xff09;&#xff0c;在系统级别上进行全磁盘加密&#xff0c;从而提高系统的安全性。 但需要注…...

防火墙的设置主要是为了防范什么

防火墙的设置主要是为了防范网络攻击和数据泄露。随着互联网的普及和信息化的加速&#xff0c;网络安全问题越来越受到人们的关注。其中&#xff0c;防火墙是一种常见的网络安全设备&#xff0c;其设置的重要性也日益凸显。 防火墙的设置主要是为了防范什么 防火墙的设置主要目…...

Vim9和其他软件的文本复制、粘贴

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

MySQL学习5:事务、存储引擎

事务 简介 事务是一组数据库操作的执行单元&#xff0c;它要么完全执行&#xff0c;要么完全不执行。事务是确保数据库中的数据一致性和完整性的重要机制之一。 事务具有以下四个特性&#xff08;称为ACID特性&#xff09;&#xff1a; 原子性&#xff08;Atomicity&#xf…...

redis如何保证接口的幂等性

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

避坑之路 —— 前后端 json 的注意问题

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

[构建 Vue 组件库] 小尾巴 UI 组件库 —— 横向商品卡片(仿淘宝)

文章归档于&#xff1a;https://www.yuque.com/u27599042/row3c6 组件库地址 npm&#xff1a;https://www.npmjs.com/package/xwb-ui?activeTabreadmegitee&#xff1a;https://gitee.com/tongchaowei/xwb-ui 下载 npm i xwb-ui配置 按需导入 import {组件名 } from xwb-…...

【Python】Python实现五子棋游戏(带可视化界面)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…...

用Maloja创建音乐收听统计数据

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

GRU门控循环单元

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

使用Puppeteer构建博客内容的自动标签生成器

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

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...