Python中几个重要的集合
Python中几个重要的集合(Collection)类型,包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)
1. 列表(List)
说明
列表是Python中最常用的数据结构之一,它是一个有序的数据集合,可以包含不同类型的元素。列表是可变的,意味着你可以添加、删除或修改列表中的元素。
示例
# 创建一个列表
my_list = [1, 2, 3, 'a', 'b', True]# 访问列表元素
print(my_list[0]) # 输出: 1# 列表切片
print(my_list[1:3]) # 输出: [2, 3]# 修改列表元素
my_list[0] = 'first'
print(my_list) # 输出: ['first', 2, 3, 'a', 'b', True]# 添加元素
my_list.append(4)
print(my_list) # 输出: ['first', 2, 3, 'a', 'b', True, 4]# 插入元素
my_list.insert(1, 'second')
print(my_list) # 输出: ['first', 'second', 2, 3, 'a', 'b', True, 4]# 删除元素
my_list.remove('a')
print(my_list) # 输出: ['first', 'second', 2, 3, 'b', True, 4]# 使用pop()删除并返回最后一个元素
last_element = my_list.pop()
print(last_element) # 输出: 4
print(my_list) # 输出: ['first', 'second', 2, 3, 'b', True]
使用场景
- 存储一系列有序的元素,如用户列表、产品列表等。
- 当你需要频繁地插入、删除或修改元素时。
2. 元组(Tuple)
说明
元组与列表类似,也是一个有序的数据集合,但它是不可变的。一旦创建,就不能更改元组中的元素。元组使用圆括号()
定义。
示例
# 创建一个元组
my_tuple = (1, 2, 3, 'a', 'b')# 访问元组元素
print(my_tuple[0]) # 输出: 1# 元组切片
print(my_tuple[1:3]) # 输出: (2, 3)# 尝试修改元组元素(会引发TypeError)
# my_tuple[0] = 'first' # 这是不允许的# 创建包含可变元素的元组(但你不能更改这些可变元素在元组中的位置)
mutable_tuple = ([1, 2], 3, 'a')
mutable_tuple[0].append(4) # 这是允许的,因为列表是可变的
print(mutable_tuple) # 输出: ([1, 2, 4], 3, 'a')
使用场景
- 存储不应该被更改的数据,如坐标点、数据库中的记录等。
- 作为字典的键(因为字典的键必须是不可变的)。
3. 集合(Set)
说明
集合是一个无序的、不包含重复元素的数据集合。集合是可变的,支持添加和删除元素,但不支持通过索引访问元素。集合主要用于数学上的集合操作,如并集、交集、差集和对称差集。
示例
# 创建一个集合
my_set = {1, 2, 3, 3, 'a'} # 重复元素自动被忽略# 添加元素
my_set.add(4)
print(my_set) # 输出: {1, 2, 3, 'a', 4}# 删除元素
my_set.remove(3)
print(my_set) # 输出: {1, 2, 'a', 4}# 使用discard()删除元素(如果元素不存在,不会引发错误)
my_set.discard(5)# 集合的并集
set1 = {1, 2, 3}
set2 = {2, 3, 4, 5}
union_set = set1.union(set2)
print(union_set) # 输出: {1, 2, 3, 4, 5}# 集合的交集
intersection_set = set1.intersection(set2)
print(intersection_set) # 输出: {2, 3}# 集合的差集
difference_set = set1.difference(set2)
print(difference_set) # 输出: {1}# 集合的对称差集
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set) # 输出: {1, 4, 5}
使用场景
- 去除重复元素。
- 数学上的集合操作,如求两个集合的并集、交集、差集等。
- 在不关心元素顺序的场景下,集合提供了比列表更高效的元素检查(成员测试)操作。
4. 字典(Dictionary)
说明
字典是Python中另一个非常强大的数据结构,它存储的是键值对(key-value pairs)的集合。字典是可变的,可以添加、删除或修改键值对。字典的键必须是唯一的,且必须是不可变的(如字符串、数字或元组)。
示例
# 创建一个字典
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}# 访问字典元素
print(my_dict['name']) # 输出: John# 修改字典元素
my_dict['age'] = 31
print(my_dict) # 输出: {'name': 'John', 'age': 31, 'city': 'New York'}# 添加新的键值对
my_dict['job'] = 'Engineer'
print(my_dict) # 输出: {'name': 'John', 'age': 31, 'city': 'New York', 'job': 'Engineer'}# 删除键值对
del my_dict['city']
print(my_dict) # 输出: {'name': 'John', 'age': 31, 'job': 'Engineer'}# 使用pop()删除键值对并返回其值
job = my_dict.pop('job')
print(job) # 输出: Engineer
print(my_dict) # 输出: {'name': 'John', 'age': 31}
使用场景
- 存储需要快速查找的数据,如用户信息、商品信息等。
- 当数据的每个元素都由两部分组成(如键和值)时。
- 在需要唯一键的场景下,字典提供了比列表更高效的数据存储和检索方式。
总结
Python中的集合类型(List, Tuple, Set, Dictionary)各自具有独特的特点和使用场景。列表是有序且可变的,适合存储需要经常修改的有序数据;元组是不可变的,适合存储不应该被更改的数据;集合是无序且唯一的,适合进行数学上的集合操作;字典则通过键值对存储数据,提供了高效的数据检索和存储方式。了解并熟练使用这些集合类型,对于编写高效、可读的Python代码至关重要。
相关文章:
Python中几个重要的集合
Python中几个重要的集合(Collection)类型,包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary) 1. 列表(List) 说…...

【JS】纯web端使用ffmpeg实现的视频编辑器-视频合并
纯前端实现的视频合并 接上篇ffmpeg文章 【JS】纯web端使用ffmpeg实现的视频编辑器 这次主要添加了一个函数,实现了视频合并的操作。 static mergeArgs(timelineList) {const cmd []console.log(时间轴数据,timelineList)console.log("文件1",this.readD…...

解决Python用xpath爬取不到数据的一个思路
前言 最近在学习Python爬虫的知识,既然眼睛会了难免忍不住要实践一把。 不废话直接上主题 代码不复杂,简单的例子奉上: import requests from lxml import etreecookie 浏览器F12网络请求标头里有 user_agent 浏览器F12网络请求标头里有…...
C#面:如何把一个array复制到arrayist里
要将一个数组复制到ArrayList中,可以使用ArrayList的AddRange方法。以下是一个示例代码: int[] array { 1, 2, 3, 4, 5 }; ArrayList arrayList new ArrayList(); arrayList.AddRange(array); 在上面的代码中,我们首先创建了一个整数类型…...

解决前后端同一个端口跨域问题
前端起了一个代理 如果url是api开头的自动代理访问8080端口(解决前后端端口不一致要么是前端代理,要么是后端加过滤器) proxy:{/api:{target:http://localhost:8080,changeOrigin : true,// 替换去掉路径上的api// rewrite:(path)>path.r…...

《C语言》认识数据类型和理解变量
🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:C语言基础 目录 前言 一、数据类型的介绍 1.1 字符型 1.2 整形 1.3 浮点型 1.4 布尔类型 1.5 各种数据类型的长度 1.5.1 sizeof操作符 1.5.2 数据类型长度…...
【ARM 常见汇编指令学习 7.1 -- LDRH 半字读取指令】
请阅读【嵌入式开发学习必备专栏】 文章目录 LDRH 使用介绍LDRH(Load Register Half-word)总结 LDRH 使用介绍 在ARMv9架构中,汇编指令LDRH用于从内存中载入数据到寄存器的指令,下面将分别对它进行详细介绍: LDRH&am…...
C++期末整理
课堂笔记 构造与析构 #include <iosteam> #include <cstring> using namespace std;struct Date {int y, m, d;void setDate(int, int, int);Date(int yy, int mm, int dd) {y yy, m mm, d dd;} };class Student { private:char* name;Date birthday; public:…...

技术派Spring事件监听机制及原理
Spring事件监听机制是Spring框架中的一种重要技术,允许组件之间进行松耦合通信。通过使用事件监听机制,应用程序的各个组件可以在其他组件不直接引用的情况下,相互发送和接受消息。 需求 在技术派中有这样一个需求,当发布文章或…...

秋招突击——设计模式补充——简单工厂模式和策略模式
文章目录 引言正文简单工厂模式策略模式策略模式和工厂模式的结合策略模式解析 总结 引言 一个一个来吧,面试腾讯的时候,问了我单例模式相关的东西,自己这方面的东西,还没有看过。这里需要需要补充一下。但是设计模式有很多&…...

SwiftUI中List的liststyle样式及使用详解添加、移动、删除、自定义滑动
SwiftUI中的List可是个好东西,它用于显示可滚动列表的视图容器,类似于UITableView。在List中可以显示静态或动态的数据,并支持垂直滚动。List是一个数据驱动的视图,当数据发生变化时,列表会自动更新。针对List…...
PostgreSQL的系统视图pg_stats
PostgreSQL的系统视图pg_stats pg_stats 是 PostgreSQL 提供的一种系统视图,用于展示当前数据库中的统计信息。这些统计信息由数据库内部的自动统计过程通过 ANALYZE 命令收集,它们帮助查询规划器做出更好的执行决策,从而优化查询性能。 pg…...

UML2.0-系统架构师(二十四)
1、(重点)系统()在规定时间内和规定条件下能有效实现规定功能的能力。它不仅取决于规定的使用条件等因素,还与设计技术有关。 A可靠性 B可用性 C可测试性 D可理解性 解析: 可靠性:规定时间…...
leetcode 152. 乘积最大子数组「贪心」「动态规划」
152. 乘积最大子数组 题目描述: 给你一个整数数组nums,请你找出数组中乘积最大的非空连续子数组,并返回该子数组所对应的乘积 思路1:贪心 由于 n u m s [ i ] nums[i] nums[i]都是整数,所以多乘一些数肯定不会让绝…...
Android项目目录结构
Android项目目录结构 1. 顶层目录2. 重要的顶层文件和目录3. app模块目录结构4. 重要的**app**模块文件和目录5. 典型的 **build.gradle** 文件内容 典型的Android项目结构的详细介绍。 1. 顶层目录 MyAndroidApp/ ├── .gradle/ ├── .idea/ ├── app/ ├── build/ ├…...

网络安全--计算机网络安全概述
文章目录 网络信息系统安全的目标网络安全的分支举例P2DR模型信息安全模型访问控制的分类多级安全模型 网络信息系统安全的目标 保密性 保证用户信息的保密性,对于非公开的信息,用户无法访问并且无法进行非授权访问,举例子就是:防…...

用requirements.txt配置环境
1. 在anaconda创建环境 创建Python版本为3.8的环境,与yolov5所需的包适配。 2. 在Anaconda Prompt中激活环境 (base) C:\Users\吴伊晴>conda activate yolov5 3. 配置环境 用指定路径中的requirements.txt配置环境。 (yolov5) C:\Users\吴伊晴>pip insta…...

APP渗透-android12夜神模拟器+Burpsuite实现
一、夜神模拟器下载地址:https://www.yeshen.com/ 二、使用openssl转换证书格式 1、首先导出bp证书 2、将cacert.der证书在kali中转换 使用openssl生成pem格式证书,并授予最高权限 openssl x509 -inform der -in cacert.der -out cacert.pem chmod 777 cacert…...
源码扭蛋机开发初探
在软件开发的世界里,创新总是层出不穷。今天,我们将一起探讨一个有趣而富有创意的项目——源码扭蛋机。源码扭蛋机,顾名思义,就是将传统的扭蛋机概念与代码编程相结合,让开发者们在扭动的过程中随机获得各种有趣的、实…...

Patch SCN使用说明---惜分飞
软件说明 该软件是惜分飞(https://www.xifenfei.com)开发,仅用来查看和修改Oracle数据库SCN(System Change Number),主要使用在数据库因为某种原因导致无法正常启动的情况下使用该工具进行解决.特别是Oracle新版本中使用隐含参数,event,orad…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...