跳到主要内容
Python 基础:列表与元组的创建、操作及区别 | 极客日志
Python 算法
Python 基础:列表与元组的创建、操作及区别 综述由AI生成 Python 列表和元组是存储序列数据的常用结构。列表可变,支持增删改查及切片操作;元组不可变,主要用于数据保护或作为字典键。两者的创建方式、下标访问、切片技巧、遍历方法以及元素插入删除操作,对比了 extend 与 + 拼接的区别,并阐述了元组在函数返回值和哈希场景下的优势。
链路追踪 发布于 2026/2/4 更新于 2026/5/31 165 浏览
1 ~> 列表和元组的概念
1.1 列表和元组概念
1.1.1 概念初识
在编程中,我们经常需要使用变量来保存或表示数据。
如果代码中需要表示的数据个数比较少,我们直接创建多个变量即可。
num1 = 10
num2 = 20
num3 = 30
但是有的时候,代码中需要表示的数据特别多,甚至也不知道要表示多少个数据。这个时候,就需要用到列表。
1.1.2 列表是一种让程序员在代码中批量表示/保存数据的方式
就像我们去超市买辣条,如果就只是买一两根辣条,那咱们直接拿着辣条就走了。
但是如果一次买个十根八根的,这个时候用手拿就不好拿,超市老板就会给我们个袋子。
这个袋子,就相当于 列表 。
1.1.3 元组和列表相比,是非常相似的,只是列表中放哪些元素可以修改调整,元组中放的元素是创建元组的时候就设定好的,不能修改调整
列表就是买散装辣条,装好了袋子之后,随时可以把袋子打开,再往里多加辣条或者拿出去一些辣条。
元组就是买包装辣条,厂家生产好了辣条之后,一包就是固定的这么多,不能变动了。
1.2 最佳实践
2 ~> 创建列表和访问下标
2.1 创建列表
2.1.1 \[ \] 表示一个空的列表 alist = []
alist = list ()
print (type (alist))
2.1.2 如果需要往里面设置初始值,可以直接写在 \[ \] 当中 可以直接使用 print 来打印 list 中的元素内容。
alist = [1 , 2 , 3 , 4 ]
print (alist)
2.1.3 列表中存放的元素允许是不同的类型 alist = [1 , 'hello' , True ]
print (alist)
因为 list 本身是 Python 中的内建函数,不宜再使用 list 作为变量名,因此命名为 alist 。
2.2 访问下标
2.2.1 可以通过下标访问操作符 \[ \] 来获取到列表中的任意元素 我们把 [ ] 中填写的数字,称为 下标 或者 索引 。
alist = [1 , 2 , 3 , 4 ]
print (alist[2 ])
注意: 下标是从 0 开始计数的,因此下标为 2,则对应着 3 这个元素。
2.2.2 通过下标不光能读取元素内容,还能修改元素的值 alist = [1 , 2 , 3 , 4 ]
alist[2 ] = 100
print (alist)
2.2.3 如果下标超出列表的有效范围,会抛出异常 alist = [1 , 2 , 3 , 4 ]
print (alist[100 ])
2.2.4 因为下标是从 0 开始的,因此下标的有效范围是 \[0,列表长度 -1\]。 alist = [1 , 2 , 3 , 4 ]
print (len (alist))
2.2.5 下标可以取负数 alist = [1 , 2 , 3 , 4 ]
print (alist[3 ])
print (alist[-1 ])
alist[-1] 相当于 alist[len(alist) - 1]。
2.3 最佳实践
a = []
a = []
a = [1 , 2 , 3 , 4 ]
a = [1 , 2 , 3 , 4 ]
print (a[len (a) - 1 ])
print (a[-1 ])
3 ~> 切片操作
3.1 概念 通过切片,则是一次取出一组连续的元素,相当于得到一个 子列表 。
3.2 理论
3.2.1 使用 \[ : \] 的方式进行切片操作 alist = [1 , 2 , 3 , 4 ]
print (alist[1 :3 ])
alist[1 : 3] 中的 1 : 3 表示的是 [1 , 3) 这样的由下标构成的前闭后开区间。
也就是从下标为 1 的元素开始(下标为 1 的元素即 2)到下标为 3 的元素结束(也就是 4),但是不包含下标为 3 的元素,所以最终结果只有 2 , 3。
3.2.2 切片操作中可以省略前后边界 alist = [1 , 2 , 3 , 4 ]
print (alist[1 :])
print (alist[:-1 ])
print (alist[:])
3.2.3 切片操作还可以指定'步长',也就是'每访问一个元素后,下标自增几步' alist = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
print (alist[::1 ])
print (alist[::2 ])
print (alist[::3 ])
print (alist[::5 ])
3.2.4 切片操作指定的步长还可以是负数,此时是从后往前进行取元素,表示'每访问一个元素之后,下标自减几步' alist = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
print (alist[::-1 ])
print (alist[::-2 ])
print (alist[::-3 ])
print (alist[::-5 ])
3.2.5 如果切片中填写的数字越界了,不会有负面效果,只会尽可能的把满足条件的元素获取到 alist = [1 , 2 , 3 , 4 ]
print (alist[100 :200 ])
3.3 最佳实践
a = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ]
print (a[1 :100 ])
4 ~> 遍历列表元素
4.1 概念 '遍历'指的是把元素一个一个的取出来,再分别进行处理。
4.2 理论
4.2.1 最简单的办法就是使用 for 循环 alist = [1 , 2 , 3 , 4 ]
for elem in alist:
print (elem)
4.2.2 也可以使用 for 循环按照范围生成下标,按下标访问 alist = [1 , 2 , 3 , 4 ]
for i in range (0 , len (alist)):
print (alist[i])
4.2.3 还可以使用 while 循环,手动控制下标的变化 alist = [1 , 2 , 3 , 4 ]
i = 0
while i < len (alist):
print (alist[i])
i += 1
4.3 最佳实践
a = [1 , 2 , 3 , 4 , 5 ]
i = 0
while i < len (a):
print (a[i])
i += 1
5 ~> 新增元素:列表的插入操作
5.1 理论
5.1.1 使用 append 方法,向列表末尾插入一个元素(尾插) alist = [1 , 2 , 3 , 4 ]
alist.append('hello' )
print (alist)
5.1.2 使用 insert 方法,向任意位置插入一个元素 alist = [1 , 2 , 3 , 4 ]
alist.insert(1 , 'hello' )
print (alist)
5.1.3 什么是'方法(method)' 方法其实就是函数,只不过函数是独立存在的,而方法往往要依附于某个'对象'。
像上述代码 alist.append,append 就是依附于 alist,相当于是
目录
1 ~> 列表和元组的概念 1.1 列表和元组概念 1.1.1 概念初识 1.1.2 列表是一种让程序员在代码中批量表示/保存数据的方式 1.1.3 元组和列表相比,是非常相似的,只是列表中放哪些元素可以修改调整,元组中放的元素是创建元组的时候就设定好的,不能修改调整 1.2 最佳实践 列表和元组的概念 变量就是内存空间,用来表示 / 存储数据 如果表示的数据少,直接定义几个变量就行了 num1, num2, num3 也有的时候,要表示的数据就比较多 Python 的列表和元组,就是这样的机制,可以用一个变量来表示很多个数据 就类似于其他编程语言中的“数组” 此处的这个袋子,就是列表 / 元组 袋子里的辣条,就是我们要表示的数据 列表和元组,大部分的功能都是差不多的!但是有一个功能是非常明显的区别: (1)列表是可变的:创建好了之后,随时能改 (2)元组是不可变的:创建好了之后,改不了,要想改,只能丢弃旧的,搞个新的~ 散装辣条,想再多来几根,很容易-->可以随时改 => 列表可变 包装辣条,想再多来几根不容易,但是可以换一个大包的 => 元组不可变 2 ~> 创建列表和访问下标 2.1 创建列表 2.1.1 \\[ \\] 表示一个空的列表 2.1.2 如果需要往里面设置初始值,可以直接写在 \\[ \\] 当中 2.1.3 列表中存放的元素允许是不同的类型 2.2 访问下标 2.2.1 可以通过下标访问操作符 \\[ \\] 来获取到列表中的任意元素 2.2.2 通过下标不光能读取元素内容,还能修改元素的值 2.2.3 如果下标超出列表的有效范围,会抛出异常 2.2.4 因为下标是从 0 开始的,因此下标的有效范围是 \\[0,列表长度 -1\\]。 2.2.5 下标可以取负数 2.3 最佳实践 列表的创建和下标访问 创建链表 1、直接使用字面值来创建 [] 就表示一个空的列表 print(type(a)) 2、使用 list() 来创建 b = list() print(type(b)) 3、使用[]还有个好处:可以在创建列表的时候,在[]中指定列表的初始值 元素之间使用 , 来分割 a = [1, 2, 3, 4] print(a) 4、可以在同一个列表里放不同的变量 a = [1, 'hello', True, [4, 5, 6]] print(a) 列表里面可以管理很多元素,通过下标访问的方式来获取到列表中的元素 要用到一个下标访问运算符 —— 也是[],注意联系上下文,就像 -(负号 / 减号) 列表 把[]放到一个列表变量的后面,同时[]写上一个整数此时它就是下标访问运算符 []中间写的这个整数,就是称为“下标”或者“索引” 5、使用下标访问元素 print(a[2]) C 语言开始,后世的各种语言,下标都是从 0 开始计数的 Python 中的下标,是从 0 开始计数的 6、使用下标来修改列表元素 --> 元组就是只能使用下标来读不能来写了 a = [1, 2, 3, 4] a[2] = 100 print(a[2]) 由于下标是从 0 开始计算的-->对于列表来说,下标的有效范围,从 0 开始,一直到其长度 -1 为止 当我们下标超出有效范围的时候,尝试访问,就会出现异常,程序崩溃 7、超出下标有效范围,就会出现异常 a = [1, 2, 3, 4] a[100] = 0 print(a) 报错:IndexError: list assignment index out of range 报错内容:超出列表的有效范围 8、可以使用内建函数 len 来获取到列表的长度 (元素个数),和字符串类似 a = [1, 2, 3, 4] print(len(a)) # 知道了列表长度,就很容易知道列表的下标范围了 len(length):len 可以传字符串,列表,元组,字典,自定义的类...=>(一个函数可以传这么多类型的原理)动态类型 9、Python 中的下标,其实还可以写成负数 例如写成 -1,其实等价于 len(a) - 1 或者直接这样理解:-1 就是倒数第一个元素!-2 就是倒数第二个,以此类推…… 简单直观,其实就是 a(len(a) - 1) 的简写 4 4 3 ~> 切片操作 3.1 概念 3.2 理论 3.2.1 使用 \\[ : \\] 的方式进行切片操作 3.2.2 切片操作中可以省略前后边界 3.2.3 切片操作还可以指定“步长”,也就是“每访问一个元素后,下标自增几步” 3.2.4 切片操作指定的步长还可以是负数,此时是从后往前进行取元素,表示“每访问一个元素之后,下标自减几步” 3.2.5 如果切片中填写的数字越界了,不会有负面效果,只会尽可能的把满足条件的元素获取到 3.3 最佳实践 列表的切片操作 和列表的下标访问操作很类似——下标访问操作是一次取出一个元素,而切片操作是一次取出一段连续的元素, 本质上相当于取出当前列表的一个子列表 一旦涉及到区间,最常见的就是前闭后开区间 1、切片操作的基本使用 a = [1, 2, 3, 4] print(a[1:3]) 2、使用切片的时候,省略边界 a = [1, 2, 3, 4] 省略后边界,意思是从开始位置,一直取到整个列表结束 print(a[1:]) 省略前边界,意思还、是从列表的 0 号元素开始取,一直取到结束的后边界 print(a[:2]) 此处切片中的下标也可以写成负数 print(a[:-1]) 还可以把开始边界和结束边界都省略掉?!得到的还是列表自身! print(a[:]) 3、带有步长的切片操作 切片操作,还可以指定“步长”,range a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] print(a[::1]) print(a[::2]) print(a[::3]) print(a[1:-1:2]) # 从 1 开始到 -1 结束,步长设定为 2 4、步长还可以是负数,当步长为负数的时候,意思是从后往前来取元素 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] print(a[::-1]) # 从后往前来取元素 print(a[::-2]) 5、当切片中的访问超出有效下标之后,不会出现异常!而是尽可能地把符合要求的元素给获取到! 不光列表,元组也是一样的,甚至前面的字符串也是可以通过切片操作取出其中的一部分的,所涉及到的规则都是一样的 4 ~> 遍历列表元素 4.1 概念 4.2 理论 4.2.1 最简单的办法就是使用 for 循环 4.2.2 也可以使用 for 循环按照范围生成下标,按下标访问 4.2.3 还可以使用 while 循环,手动控制下标的变化 4.3 最佳实践 列表的遍历操作 遍历:把一个列表里面的每个元素,都依次的取出来,并进行某种操作 就像老师上课点名,不重不漏 遍历 ==> 搭配循环 1、使用 for 循环来遍历列表(最常用的,不修改列表本身) elem 就代表了列表里的每个元素,elem 就是 element 这个单词的缩写 a = [1, 2, 3, 4, 5] for elem in a: # for in 后面这个要求是一个可迭代对象(可以一个一个取出里面包含的元素) print(elem) # 在这个遍历过程中,循环里面写的,不一定是打印,还可以是别的 # 不会对原来的列表产生影响,只是修改了 elem 这个变量 a = [1, 2, 3, 4, 5] for elem in a: elem = elem + 10 print(a) 2、使用 for 循环遍历——通过下标的方式(如果想在遍历过程中修改列表的值,选择) a = [1, 2, 3, 4, 5] for i in range(0, len(a)): print(a[i]) # 取到了实打实在列表里面的元素,会对原来的列表产生影响 a = [1, 2, 3, 4, 5] for i in range(0, len(a)): # print(a[i]) a[i] = a[i] + 10 print(a) 3、使用 while 循环,通过下标遍历 (想在遍历过程中对列表本身的值进行修改) 5 ~> 新增元素:列表的插入操作 5.1 理论 5.1.1 使用 append 方法,向列表末尾插入一个元素(尾插) 5.1.2 使用 insert 方法,向任意位置插入一个元素 5.1.3 什么是“方法(method)” 相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online