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

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框架中的一种重要技术&#xff0c;允许组件之间进行松耦合通信。通过使用事件监听机制&#xff0c;应用程序的各个组件可以在其他组件不直接引用的情况下&#xff0c;相互发送和接受消息。 需求 在技术派中有这样一个需求&#xff0c;当发布文章或…...

秋招突击——设计模式补充——简单工厂模式和策略模式

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

SwiftUI中List的liststyle样式及使用详解添加、移动、删除、自定义滑动

SwiftUI中的List可是个好东西&#xff0c;它用于显示可滚动列表的视图容器&#xff0c;类似于UITableView。在List中可以显示静态或动态的数据&#xff0c;并支持垂直滚动。List是一个数据驱动的视图&#xff0c;当数据发生变化时&#xff0c;列表会自动更新。针对List&#xf…...

PostgreSQL的系统视图pg_stats

PostgreSQL的系统视图pg_stats pg_stats 是 PostgreSQL 提供的一种系统视图&#xff0c;用于展示当前数据库中的统计信息。这些统计信息由数据库内部的自动统计过程通过 ANALYZE 命令收集&#xff0c;它们帮助查询规划器做出更好的执行决策&#xff0c;从而优化查询性能。 pg…...

UML2.0-系统架构师(二十四)

1、&#xff08;重点&#xff09;系统&#xff08;&#xff09;在规定时间内和规定条件下能有效实现规定功能的能力。它不仅取决于规定的使用条件等因素&#xff0c;还与设计技术有关。 A可靠性 B可用性 C可测试性 D可理解性 解析&#xff1a; 可靠性&#xff1a;规定时间…...

leetcode 152. 乘积最大子数组「贪心」「动态规划」

152. 乘积最大子数组 题目描述&#xff1a; 给你一个整数数组nums&#xff0c;请你找出数组中乘积最大的非空连续子数组&#xff0c;并返回该子数组所对应的乘积 思路1&#xff1a;贪心 由于 n u m s [ i ] nums[i] nums[i]都是整数&#xff0c;所以多乘一些数肯定不会让绝…...

Android项目目录结构

Android项目目录结构 1. 顶层目录2. 重要的顶层文件和目录3. app模块目录结构4. 重要的**app**模块文件和目录5. 典型的 **build.gradle** 文件内容 典型的Android项目结构的详细介绍。 1. 顶层目录 MyAndroidApp/ ├── .gradle/ ├── .idea/ ├── app/ ├── build/ ├…...

网络安全--计算机网络安全概述

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

用requirements.txt配置环境

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

APP渗透-android12夜神模拟器+Burpsuite实现

一、夜神模拟器下载地址&#xff1a;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…...

源码扭蛋机开发初探

在软件开发的世界里&#xff0c;创新总是层出不穷。今天&#xff0c;我们将一起探讨一个有趣而富有创意的项目——源码扭蛋机。源码扭蛋机&#xff0c;顾名思义&#xff0c;就是将传统的扭蛋机概念与代码编程相结合&#xff0c;让开发者们在扭动的过程中随机获得各种有趣的、实…...

Patch SCN使用说明---惜分飞

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

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 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 系统…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...