「Python系列」Python数据结构
文章目录
- 一、数据结构
- 二、相关链接
一、数据结构
Python提供了多种内置的数据结构,这些数据结构在编程中非常有用。以下是Python中常见的一些数据结构:
- 列表(List):
列表是Python中最常用的数据结构之一,它是一个有序的集合,可以包含任意类型的对象,包括数字、字符串、元组、列表等。列表是可变的,意味着你可以修改、添加或删除列表中的元素。
my_list = [1, 2, 3, "four", 5.5]
my_list.append(6) # 添加元素
my_list.remove(3) # 删除元素
方法
| 方法 | 描述 |
|---|---|
| list.append(x) | 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。 |
| list.extend(L) | 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。 |
| list.insert(i, x) | 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。 |
| list.remove(x) | 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。 |
| list.pop([i]) | 从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop() |
| list.clear() | 移除列表中的所有项,等于del a[:]。 |
| list.index(x) | 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。 |
| list.count(x) | 返回 x 在列表中出现的次数。 |
| list.sort() | 对列表中的元素进行排序。 |
| list.reverse() | 倒排列表中的元素。 |
| list.copy() | 返回列表的浅复制,等于a[:]。 |
- 元组(Tuple):
元组与列表类似,也是一个有序的集合,但它是不可变的。一旦元组被创建,就不能修改它的内容。元组通常用于存储不需要修改的数据。
创建元组
你可以使用圆括号 () 来创建一个元组。元组中的元素之间用逗号分隔。
# 创建一个包含整数的元组
my_tuple = (1, 2, 3)# 创建一个包含不同类型元素的元组
mixed_Tuple = (1, "hello", 3.14)# 创建一个空元组
empty_Tuple = ()# 创建一个只有一个元素的元组(注意逗号的使用)
single_element_Tuple = (42,)
访问元组元素
你可以通过索引来访问元组中的元素。索引是从0开始的整数。
my_Tuple = (10, 20, 30, 40)# 访问第一个元素
first_element = my_Tuple[0] # 输出: 10# 访问最后一个元素
last_element = my_Tuple[-1] # 输出: 40# 访问第三个元素
third_element = my_Tuple[2] # 输出: 30
元组操作
虽然元组是不可变的,但你还是可以对它们进行一些操作,如连接、重复、索引、切片等。
# 连接两个元组
tuple1 = (1, 2, 3)
Tuple2 = (4, 5, 6)
combined_Tuple = Tuple1 + Tuple2 # 输出: (1, 2, 3, 4, 5, 6)# 重复一个元组
repeated_Tuple = Tuple1 * 2 # 输出: (1, 2, 3, 1, 2, 3)# 切片操作
sliced_Tuple = my_Tuple[1:3] # 输出: (20, 30)# 检查元素是否在元组中
if 20 in my_Tuple:print("20 is in the tuple")# 获取元组长度
length = len(my_Tuple) # 输出: 4
元组与列表的比较
元组和列表非常相似,但主要的区别在于元组是不可变的,而列表是可变的。这意味着一旦你创建了一个元组,就不能修改它,而列表可以在任何时候被修改。
- 元组:不可变、用于存储不可变的数据集合、用作字典的键、因为不可变所以更安全。
- 列表:可变、用于存储可变的数据集合、不可以用作字典的键、因为可变所以更加灵活。
元组的用途
- 当你需要一个不会改变的数据集合时,可以使用元组。
- 元组常用于表示一系列相关的值,例如坐标点(x, y)。
- 因为元组是不可变的,所以它们经常用作字典的键。
- 当函数需要返回多个值时,元组是一个很好的选择。
虽然元组是不可变的,但你可以通过元组解包(tuple unpacking)来轻松地将元组中的值赋给变量。
x, y, z = (1, 2, 3)
print(x) # 输出: 1
print(y) # 输出: 2
print(z) # 输出: 3
更多详细介绍,可了解下我的另一篇文章
「Python系列」Python元组
- 字典(Dictionary):
字典是一个无序的键值对集合。每个键在字典中都是唯一的,通过键可以快速地访问、添加或删除对应的值。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print(my_dict["name"]) # 输出: Alice
my_dict["country"] = "USA" # 添加键值对
del my_dict["age"] # 删除键值对
- 集合(Set):
集合是一个无序且不包含重复元素的集合。集合通常用于成员关系测试和消除重复元素。
my_set = {1, 2, 3, 3, 4} # 重复的元素会被自动移除
my_set.add(5) # 添加元素
my_set.remove(2) # 删除元素
- 字符串(String):
虽然字符串在Python中是不可变的,但它们仍然是一种非常重要的数据结构。字符串是由字符组成的序列,可以用于表示文本信息。
my_string = "Hello, World!"
print(my_string[0]) # 输出: H
# my_string[0] = 'h' # 这行代码会报错,因为字符串是不可变的
- 自定义数据结构:
除了内置的数据结构外,你还可以使用类(Class)来定义自己的数据结构。例如,你可以创建一个类来表示一个二维点,包含x和y坐标。
class Point:def __init__(self, x, y):self.x = xself.y = yp = Point(1, 2)
print(p.x, p.y) # 输出: 1 2
这些数据结构提供了强大的功能,可以帮助你更有效地组织和操作数据。每种数据结构都有其适用的场景和优缺点,因此选择正确的数据结构对于编写高效和可维护的代码至关重要。
二、相关链接
- Python下载安装中心
- Python官网
- Python软件下载
- 「Python系列」Python简介及案例
- 「Python系列」Python基础语法/数据类型
- 「Python系列」Python解释器
- 「Python系列」Python运算符
相关文章:
「Python系列」Python数据结构
文章目录 一、数据结构二、相关链接 一、数据结构 Python提供了多种内置的数据结构,这些数据结构在编程中非常有用。以下是Python中常见的一些数据结构: 列表(List): 列表是Python中最常用的数据结构之一,它是一个有…...
MySQL多实例部署:从概念到实操的全面指南
目录 MySQL多实例管理 单实例 什么是多实例 多实例的好处 多实例的弊端 MySQL多实例用在哪些场景 资金紧张的公司 用户并发访问量不大的业务 大型网站也有用多实例 部署MySQL多实例 rpm和源码的优缺点 二进制方式安装mysql 准备二进制mysql运行所需的环境 准备多…...
C++学习Day07之虚函数和纯虚函数
目录 前言一、程序及输出1.1 虚函数1.2 纯虚函数1.2.1 定义、示例1.2.2 引入原因1.2.3 抽象类 二、分析与总结 前言 在 C 中,虚函数和纯虚函数是实现多态性的重要概念。虚函数是在基类中声明为虚函数的函数,在派生类中可以被重写,实现动态联…...
GZ036 区块链技术应用赛项赛题第9套
2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷(9卷) 任 务 书 参赛队编号: 背景描述 随着异地务工人员的增多,房屋租赁成为一个广阔是市场;目前,现有技术中的房屋租赁是由…...
微服务—RabbitMQ高级(延迟消息)
本博客为个人学习笔记,学习网站:2023黑马程序员RabbitMQ入门到实战教程 高级篇章节 目录 延迟消息 死信交换机 延迟消息插件 下载安装 延迟交换机声明 编辑 发送延迟消息 订单状态同步问题 延迟消息 在电商的支付业务中,对于一些库…...
香港服务器如何取消windows的自动更新
大家用过电脑的人对windows系统的自动更新应该都不会陌生,其实香港服务器的使用也是一样的方法。为什么要对香港服 务器windows的自动更新进行关闭呢?其主要原因在于,有些更新是不能更新,一更新话,系统反而会变得不稳定…...
kali虚拟机桥接模式快速设置
第一步:选择 虚拟机 > 设置 > 虚拟机设置,设置桥接模式 不选择复制物理网络连接状态选项: 如果采用DHCP的方式来分配IP地址,当电脑网络从有线或无线网络之间进行移动时,DHCP会重新分配ip地址,即虚拟机…...
「连载」边缘计算(十五)02-18:边缘部分源码(源码分析篇)
(接上篇) ChannelContext struct定义如下所示。 KubeEdge/beehive/pkg/core/context/context.go // ChannelContext is object for Context channel type ChannelContext struct { //ConfigFactory goarchaius.ConfigurationFactory channels map[…...
MySQL性能调优篇(8)-NoSQL与MySQL的比较
MySQL数据库是一种关系型数据库,而NoSQL是一种非关系型数据库。它们在数据存储和处理方式、数据模型和可扩展性等方面存在一些明显的差异。本文将对MySQL数据库和NoSQL进行比较,并介绍它们的优势和劣势。 首先,MySQL使用表格的形式来存储数据…...
【Linux学习】线程池
目录 23.线程池 23.1 什么是线程池 23.2 为什么需要线程池 23.3 线程池的应用场景 23.4 实现一个简单的线程池 23.4.1 RAII风格信号锁 23.4.2 线程的封装 23.4.3 日志打印 22.4.4 定义队列中存放Task类任务 23.4.5 线程池的实现(懒汉模式) 为什么线程池中需要有互斥锁和条件变…...
利用Docker部署一个简单的springboot项目
文章目录 1、首先利用docker部署一个redis中间件1.1、下载redis镜像1.2、在主机创建redis挂载的目录和文件1.3、部署redis中间件 2、创建springboot项目2.1、修改application.yml2.2、编写controller2.3、启动应用并测试访问 3、将应用打包成镜像3.1、编写Dockerfile3.2、上传文…...
【Java】纯小白的三种工厂模式基础知识学习笔记
工厂模式概念 在Java中,工厂模式是一种设计模式,用于创建对象而无需指定明确的类。工厂模式通过定义一个共同的接口或抽象类来创建对象,然后由工厂类根据特定条件或参数来实例化具体的对象。 工厂模式通常包括三种类型:简单工厂…...
Spring Boot 笔记 006 创建接口_注册
1.1 由于返回数据都是以下这种格式,那么久再编写一个result实体类 报错了,原因是没有构造方法 可以使用lombok的注解自动生成,添加无参的构造器和全参的构造器 package com.geji.pojo;import lombok.AllArgsConstructor; import lombok.NoArg…...
沁恒CH32V30X学习笔记08---基本定时器超时功能
TIM 基本定时器 高级定时器模块包含一个功能强大的 16 位自动重装定时器(TIM1、TIM8、TIM9 和 TIM10) 通用定时器模块包含一个 16 位可自动重装的定时器(TIM2、TIM3、TIM4 和 TIM5) 基本定时器模块包含一个 16 位可自动重装的定时器(TIM6 和 TIM7) 定时器的结构大致可…...
GitHub | 在 GitHub 上在线展示 Vue 项目
简洁版:上传所有代码 << 构建项目并上传 dist 目录 << 设置仓库 << 访问 Step1:在 GitHub 上新建仓库,并将 Vue 项目的代码 push 到该仓库中。坑点在于,如果你是从 GitHub 上 clone 的别人的项目,那…...
Android的Compose
Jetpack Compose 是用于构建原生 Android 界面的新工具包,无需修改任何 XML 布局,也不需要使用布局编辑器。相反,只需调用可组合函数来定义所需的元素,Compose 编译器即会完成后面的所有工作。 简而言之,使用Compose&…...
C++ STL->list模拟实现
theme: smartblue list list文档 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素…...
基于python+django+vue.js开发的健身房管理系统
功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 功能包括:教练管理、会员管理、场地管理、设备管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeeeek/python_…...
GPT-4对编程开发的支持
在编程开发领域,GPT-4凭借其强大的自然语言理解和代码生成能力,能够深刻理解开发者的意图,并基于这些需求提供精准的编程指导和解决方案。对于开发者来说,GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…...
“成像光谱遥感技术中的AI革命:ChatGPT应用指南“
遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用,人工智…...
大功率H桥电机驱动板电路设计方案 - ir2103驱动芯片应用方案
大功率H桥电机驱动板电路设计方案 此大功率直流电机驱动板采用ir2103驱动芯片,可同时驱动两路电机,使用10m高速光耦对控制信号进行隔离,最大额定电流可达100A,方案包括:硬件原理图,PCB(可直接打样测试)&…...
IEEE旗下通信类期刊全解析:从影响因子看学术风向标(2023最新版)
IEEE通信类期刊2023全景透视:影响因子背后的学术趋势与选刊策略 翻开最新发布的《期刊引证报告》(JCR2023),IEEE旗下通信类期刊的影响因子变化再次成为学界热议焦点。作为全球最大的专业技术组织之一,IEEE出版的期刊向…...
3款免费MySQL客户端实测对比:DBeaver、WorkBench、HeidiSQL哪个更适合你?
三款开源MySQL客户端深度横评:从安装到高阶功能的全方位指南 当Navicat的收费模式成为团队协作或个人开发的负担时,开发者们往往需要寻找功能相当但零成本的开源替代品。本文将基于实际工程经验,对DBeaver、MySQL Workbench和HeidiSQL这三款主…...
解决Windows 11 LTSC应用商店缺失难题:从根源修复到生态重建的完整方案
解决Windows 11 LTSC应用商店缺失难题:从根源修复到生态重建的完整方案 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 在企业环境和专业工…...
避坑指南:用ArcGIS批量裁剪TIFF时,如何确保输出范围和命名不混乱?
ArcGIS批量裁剪TIFF实战:精准控制输出范围与命名的进阶技巧 当你面对数百个TIFF文件需要批量裁剪时,ArcGIS的ModelBuilder本应是效率神器,但实际使用中却常常遇到输出范围错乱、命名重复甚至文件丢失的窘境。我曾在一个遥感数据处理项目中&am…...
PHP反序列化漏洞实战:从NewStarCTF题目看私有属性的坑
PHP反序列化漏洞实战:私有属性处理中的隐藏陷阱 在CTF竞赛和实际渗透测试中,PHP反序列化漏洞一直是Web安全领域的重点研究对象。而其中关于类属性可见性(特别是private修饰符)的处理机制,往往成为解题的关键突破口。去…...
5种突破方案:非Steam游戏创意工坊模组获取终极指南
5种突破方案:非Steam游戏创意工坊模组获取终极指南 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 一、问题定位:非Steam玩家的创意工坊访问困境 1.1 核…...
效率飙升:用快马生成自动化脚本,告别手动vlookup跨表匹配
效率飙升:用快马生成自动化脚本,告别手动vlookup跨表匹配 工作中经常遇到需要跨表格匹配数据的情况,比如把订单表和客户信息表通过订单号关联起来。传统做法是手动用Excel的vlookup函数,但数据量大时不仅操作繁琐,还容…...
3大核心能力彻底解决Steam游戏库混乱问题:Depressurizer自动化分类实战指南
3大核心能力彻底解决Steam游戏库混乱问题:Depressurizer自动化分类实战指南 【免费下载链接】Depressurizer A Steam library categorizing tool. 项目地址: https://gitcode.com/gh_mirrors/de/Depressurizer 你是否曾在Steam游戏库中面对数百款游戏却不知从…...
开源可二次开发的物联网云平台,支持工业设备远程控制与数据采集
物联网云平台工业设备对接远程控制数据采集视频接入开源可二次开发 该物联网云平台使用 Java 语言、主流技术组合开发,支持多数据源,支持代码一键生成,方便快速开发。 1、内含物联网云平台全套源码(源码全部开放,无任何…...
