【Python】Python中的列表,元组,字典
文章目录
- 列表
- 创建列表
- 获取元素
- 修改元素
- 添加元素
- 查找元素
- 删除元素
- 列表拼接
- 遍历列表
- 切片操作
- 元组
- 创建元组
- 元组中的操作
- 字典
- 创建字典
- 添加/修改元素
- 删除元素
- 查找
- 字典的遍历
- 合法的key类型
列表
列表是一种批量保存数据的方式,列表使用[]
表示
创建列表
- 创建两个空列表
a = []
print(type(a))
b = list()
print(type(b))
- 还可以在创建列表时,给定一些初始值
a = [1, 2, 3]
- 列表中存放的元素可以是不同类型的
b = [1, 'hello', True, 3.14, [1, 2, 3]]
- 可以直接使用print函数打印列表
b = [1, 'hello', True, 3.14, [1, 2, 3]]
print(b)
获取元素
- 可以通过下标的方式来获取指定位置元素,下标访问符
[]
a = [1, 2, 3]
print(a[1])
注意:下标是从0开始的,也就是0对应第一个元素,1对应第二个元素
- 如果下标越界,会抛出下标越界异常
a = [1, 2, 3]
print(a[10])
- 可以使用
len
函数获取列表元素的个数
a = [1, 2, 3, 4]
print(len(a))
- 下标可以是负数,表示倒数第几个元素
a = [1, 2, 3, 4]
# 倒数第一个元素是4
print(a[-1])
修改元素
通过下标的方式可以修改值
a = [1, 2, 3, 4]
# 将倒数第一个元素修改为5
a[-1] = 5
print(a)
添加元素
- 使用
append
方法进行尾插
a = [1, 2, 3, 4, 5]
a.append(6)
a.append(7)
print(a)
b = list()
b.append(1)
b.append(2)
print(b)
- 使用
insert
方法向任意位置插入,这里的位置也是下标
a = [1, 2, 3]
# 向下标1插入hello,列表变为1,hello,2,3
a.insert(1, 'hello')
print(a)
查找元素
- 使用
in
来判断元素是否在列表中
a = [1, 2, 'hello']
print(1 in a)
print(3 in a)
print('hello' in a)
print('world' in a)
- 使用
index
函数,查找元素在列表中的下标,如果元素不存在,则会抛异常
a = [1, 2, 'hello']
print(a.index('hello'))
print(a.index(2))
元素不存在则抛出异常
a = [1, 2, 'hello']
print(a.index(3))
删除元素
- 使用
pop
函数可以进行尾删
a = [1, 2, 'hello']
a.pop()
print(a)
a.pop()
print(a)
- 也可以为pop函数传入下标,按照下标删除
a = [1, 2, 3, 'hello']
a.pop(3)
print(a)
- 使用
remove
函数,按照值删除
a = [1, 2, 3, 'hello']
a.remove(3)
a.remove('hello')
print(a)
列表拼接
- 使用
+
可以拼接两个列表,使用+拼接,返回的是一个新列表,即原列表不受影响
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
- 使用
extend
方法把一个列表拼接到另一个列表后面,此时会改变拼接的列表
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)
print(b)
说明:将b列表拼接在a列表后面,即a列表发生变化,b列表不变
遍历列表
遍历列表就是从头往后依次获取列表中的每一个元素
- 使用for循环遍历
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for e in a:print(e)
- 使用for循环加下标
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(0,len(a)):print(a[i])
- 使用while循环遍历
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
i = 0
while i < len(a):print(a[i])i += 1
切片操作
通过下标是一次只能取出一个元素,而通过切片操作一次可取出一组连续的元素
- 使用
[:]
进行切片操作
a = [1, 2, 3, 4, 5]
print(a[1:3])
说明:[1:3]表示由下标组成为[1,3)区间的下标集合,包含的下标有1,2,不包含3
切片操作也可以省略前后边界
- 省略后边界,表示获取到列表尾部
a = [1, 2, 3, 4, 5]
print(a[1:])
- 省略前边界,表示从列表头开始获取
a = [1, 2, 3, 4, 5]
# 从头开始直到倒数第一个(不包含倒数第一个)
print(a[:-1])
- 前后边界都省略,表示获取整个列表
a = [1, 2, 3, 4, 5]
print(a[:])
- 切片操作还可以指定步长,表示访问一个元素,下标增加几步
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 从下标1开始直到8(不包含8),每隔两个长度打印
print(a[1:8:2])
- 切片操作的步长还可以是负数,表示从后往前取元素
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 此时下标范围为[8,1)(从后往前)
print(a[8:1:-2])
- 如果切片操作中的数字越界了,不会有负面影响,会尽可能把满足条件的元素获取到
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[8:100])
元组
元组和列表相似,只是列表中的元素可以被修改,而元组中的元素不可修改,也就是元组一旦确定,就只能进行读操作,不可以进行修改操作,元组使用
()
表示
创建元组
# 创建两个空元组
a = ()
b = tuple()
在创建元组时进行初始化
a = (1, 2, 'hello', 3.14, True)
元组中的操作
元组与列表类似,只是元组一旦定义则不能修改其中的元素
- 像读操作,比如切片操作,遍历,in,index,+等,元组是支持的
- 像写操作,比如添加元素,删除元素,修改元素,extend等,元组是不支持的
对于读之类的操作,和上述列表操作类似,此处不过多介绍,具体操作参照上述列表操作
- 元组在Python中很多时候是默认的集合类型,如函数返回多个值时
def method():return 10, 20
ret = method()
print(type(ret))
有了列表,为什么还需要元组?
- 你有一个列表,现在需要调用一个函数进行一些处理,但是你有不是特别确认这个函数是否会
把你的列表数据弄乱,那么这时候传一个元组就安全很多 - 马上要介绍的字典,是一个键值对结构,要求字典的键必须是 “可hash对象” (字典本质上也
是一个hash表),而一个可hash对象的前提就是不可变,因此元组可以作为字典的键,但是列表
不行
字典
字典是一个存储键值对
key: value
的结构,字典用{}
表示
创建字典
键值对:键:值
,多个键值对用,
分割
# 创建两个空字典
a = {}
b = dict()
可以在创建的时候指定初始值,也可以使用print打印字典
a = {'name': '张三','gender': 'm','age': 20
}
print(a)
添加/修改元素
使用[]
可以根据key来增加元素或者修改元素
- 如果key不存在,则为新增键值对
a = {'name': '张三','gender': 'm','age': 20
}
# class不存在,则为新增
a['class'] = 3
print(a)
- 如果key存在,则为修改
a = {'name': '张三','gender': 'm','age': 20
}
a['name'] = '李四'
print(a)
删除元素
使用pop
方法根据key删除键值对
a = {'name': '张三','gender': 'm','age': 20
}
a.pop('name')
print(a)
查找
- 使用
in
可以判断key是否在字典中存在
a = {'name': '张三','gender': 'm','age': 20
}
print('name' in a)
print('class' in a)
- 基于
[]
使用key来获取value的值
a = {'name': '张三','gender': 'm','age': 20
}
print(a['name'])
print(a['age'])
- 如果key在字典中不存在,则会抛异常
a = {'name': '张三','gender': 'm','age': 20
}
print(a['class'])
字典的遍历
- 使用for循环获取到key,再通过key获取到value
a = {'name': '张三','gender': 'm','age': 20
}
for key in a:print(key, a[key])
- 使用keys方法可以获取字典中所有的key
a = {'name': '张三','gender': 'm','age': 20
}
print(a.keys())
说明:dict_keys是一个特殊的类型,专门用来表示字典所有的key
- 使用values方法可以获取字典中所有的value
a = {'name': '张三','gender': 'm','age': 20
}
print(a.values())
说明:dict_values和dict_keys类似,专门用来表示字典中所有的value
- 使用items方法可以获取到字典中所有的键值对
a = {'name': '张三','gender': 'm','age': 20
}
print(a.items())
说明:dict_items和dict_keys类似,专门用来表示字典中所有的键值对
合法的key类型
字典本质上是一个哈希表
,而哈希表的key值是要求是“可哈希的”
,也就是可以通过这个key计算出哈希值
- 可以使用hash函数计算出哈希值
- 可以计算出哈希值的类型就可以作为key
- int,float,str,bool,元组类型的走可以计算出哈希值,可以作为key
print(hash(3))
print(hash('hello'))
print(hash(True))
print(hash((1, 2, 3)))
- 列表不可以计算哈希值,不可以作为key
print(hash([1, 2, 3]))
- 字典不可以计算哈希值,无法作为key
print(hash({'name': 'zs', 'age': 10}))
相关文章:

【Python】Python中的列表,元组,字典
文章目录 列表创建列表获取元素修改元素添加元素查找元素删除元素列表拼接遍历列表切片操作 元组创建元组元组中的操作 字典创建字典添加/修改元素删除元素查找字典的遍历合法的key类型 列表 列表是一种批量保存数据的方式,列表使用[]表示 创建列表 创建两个空列…...

分布式系统概念和设计-分布式对象和远程调用
分布式系统概念和设计 分布式对象和远程调用 能够接收远程方法调用的对象称为远程对象,远程对象实现一个远程接口。 调用者和被调用对象分别存在不同的失败可能性,RMI和本地调用有不同的语义。 中间件 在进程和消息传递等基本构造模块之上提供编程模型的…...

11-FastDFS
一 为什么要使用分布式文件系统 单机时代 初创时期由于时间紧迫,在各种资源有限的情况下,通常就直接在项目目录下建立静态文件夹,用于用户存放项目中的文件资源。如果按不同类型再细分,可以在项目目录下再建立不同的子目录来区分…...

Word这样用,提高效率不加班
Word这样用,提高效率不加班 今天给大家分享23条Word文档的应用小技巧。对于大家来说,掌握些技巧能够效率百倍,何乐不为? 这些技巧是本人通过整理一直在用并且使用频率较高的,也希望能帮到大家。有兴趣的小伙伴可以自己…...

【Linux】调试器---gdb的使用
文章目录 一.背景知识二.安装gdb三.gdb的用法使用须知gdb的常用指令1.进入调试2.退出调试操作3.显示源代码4.设置断点breakPoint5.查看断点信息/禁用断点/开启断点/删除断点6.运行程序,开始调试run7.查看变量8.其它重要命令 一.背景知识 程序的发布方式有两种&…...

MySQL数据库之表的增删改查(进阶)
目录 1. 数据库约束1.1 约束类型1.2 NULL约束1.3 UNIQUE:唯一约束1.4 DEFAULT:默认值约束1.5 PRIMARY KEY:主键约束1.6 FOREIGN KEY:外键约束1.7 CHECK约束 2 表之间的关系2.1 一对一2.2 一对多2.3 多对多 3 新增4 查询4.1 聚合查…...
Nginx从开始到结束,简单到小白都能懂哦
绪论 大家好,很高兴能够为大家带来这篇关于Nginx配置的新手指南。在这篇博客中,我们将通过简单明了的图文教程,帮助大家快速上手Nginx配置,解锁Nginx的各种神奇功能! 一、Nginx简介 Nginx是一款功能强大的web服务器…...
Qt——Qt控件之按钮-QDialogButtonBox对话框按钮盒子控件的使用总结(例程:自定义按钮)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》...

数据库学习-常用的SQL语句
背景: 汇整一下自己学习数据库过程中常见的题目及语句。 一.实例分析题 二.简单SQL查询: 1):统计每个部门员工的数目select dept,count(*) from employee group by dept;2):统计每个部门员工的数目大于一个的记录se…...
5种获取JavaScript时间戳函数的方法
5种获取JavaScript时间戳函数的方法 一、JavasCRIPT时间转时间戳方法一:Date.now()方法二:Date.parse()方法三:valueOf()方法四:getTime()方法五:Number 二、js时间戳转时间方法一:生成2022/1/18 上午10:09…...
图的宽度优先遍历
文章目录 图的宽度优先遍历程序设计程序分析图的宽度优先遍历 【问题描述】根据输入图的邻接矩阵A,给出图的宽度优先遍历序列; 【输入形式】第一行为图的结点个数n,第二行输入顶点的信息,每个顶点用一个字符表示,接下来的n行为图的邻接矩阵A。其中A[i][j]=1表示两个结点邻…...

企业AD域(域控服务器)的安装和配置详细教程
一、环境以及工具准备 软件:VMWare Workstation 2016 ( 下载链接:https://pan.baidu.com/s/1iX1VRilerYPGbGvX4pvaKw 提取码:75R6 ) 镜像:Windows Server 2016 ( 下载地址ÿ…...

面试官:一千万的数据,你是怎么查询的?
面试官:一千万的数据,你是怎么查询的? 1 先给结论 对于1千万的数据查询,主要关注分页查询过程中的性能 针对偏移量大导致查询速度慢: 先对查询的字段创建唯一索引 根据业务需求,先定位查询范围(…...

IntelliJ 上 Azure Event Hubs 全新支持来了!
大家好,欢迎来到 Java on Azure Tooling 的3月更新。在这次更新中,我们将介绍 Azure Event Hubs 支持、Azure Functions 的模板增强,以及在 IntelliJ IDEA 中部署 Azure Spring Apps 时的日志流改进。要使用这些新功能,请下载并安…...

性能测试,监控磁盘读写iostat
性能测试,监控磁盘读写iostat iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU使用情况。同vmstat一样,ios…...

steam游戏搬砖项目怎么做?月入过万的steam搬砖项目教程拆解
steam游戏搬砖项目怎么做?月入过万的steam搬砖项目教程拆解 大家好,我是童话姐姐,今天继续来聊Steam搬砖项目。 Steam搬砖项目也叫CSGO搬砖项目,它并不是什么刚面世的新项目,是已经存在至少七八年的一个资深老牌项目。这个项目…...

协同运力、算力、存力,加速迈向智能世界
2023年4月20日,华为在HAS2023期间举办“迈向智能世界”主题论坛,吸引了来自全球的分析师、专家学者及媒体与会。会上,华为ICT战略与Marketing总裁彭松发表了“持续技术创新,加速迈向智能世界”的主题演讲。 华为ICT战略与Marketin…...

被裁员了,要求公司足额补缴全部公积金,一次补了二十多万!网友兴奋了,该怎么操作?...
被裁员后,能要求公司补缴公积金吗? 一位网友问: 被裁员了,要求公司把历史公积金全部足额缴纳,现在月薪2.3万,但公司每个月只给自己缴纳300元公积金,结果一次补了二十多万,一次性取出…...

家庭智能插座一Homekit智能
传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能硬件进行通信&#x…...

什么是雪花算法?啥原理?
1、SnowFlake核心思想 SnowFlake 算法,是 Twitter 开源的分布式 ID 生成算法。 其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 ID。在分布式系统中的应用十分广泛,且 ID 引入了时间戳,基本上保持自增的…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...