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…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
