Python 列表
列表(list)是一种有序和可更改的集合,列表中允许存在重复元素,允许存在不同类型的元素。
Python 列表的数据类型特性及操作方法。涵盖列表的创建(空列表与非空列表)、元素管理(增删改查)、切片提取、列表拼接以及常用内置函数。通过具体代码示例演示了 append、insert、pop、remove、index 等方法的使用场景,并解释了负索引、步长切片及越界处理机制,适合 Python 初学者掌握列表核心知识。

列表(list)是一种有序和可更改的集合,列表中允许存在重复元素,允许存在不同类型的元素。
在 Python 中 [] 表示一个空列表:
a = []
print(type(a)) # <class 'list'>
print(a) # []
使用 list() 函数也可以创建一个空列表:
a = list()
print(type(a)) # <class 'list'>
print(a) # []
创建列表时可以设置初始值:
a = [1, 3, 2.2, 'Jinger']
print(type(a)) # <class 'list'>
print(a) # [1, 3, 2.2, 'Jinger']
append 方法可以在列表末尾增加一个元素:
a = [1, 3.0, 2.2]
a.append('Jinger')
print(type(a)) # <class 'list'>
print(a) # [1, 3.0, 2.2, 'Jinger']
insert 方法可以在任意指定下标(支持负索引)插入一个元素:
a = [1, 3.0, 2.2]
a.insert(1, 'Jinger')
print(type(a)) # <class 'list'>
print(a) # [1, 'Jinger', 3.0, 2.2]
a.insert(-1, 'Hello')
print(type(a)) # <class 'list'>
print(a) # [1, 'Jinger', 3.0, 'Hello', 2.2]
负索引说明: 我们常说的下标都是从列表第一个元素开始往后,从 0 开始计数的。而负索引则是从列表最后一个元素开始往前,依次为
-1, -2, -3...。因此想要访问列表的最后一个元素,直接访问下标为 -1 的元素即可。
注意:如果指定下标超出列表中的最大下标,则插入到列表末尾(如果为负索引,则插入列表首部):
a = [1, 3.0, 2.2]
a.insert(100, 'Jinger')
print(type(a)) # <class 'list'>
print(a) # [1, 3.0, 2.2, 'Jinger']
a.insert(-100, 'Hello')
print(type(a)) # <class 'list'>
print(a) # ['Hello', 1, 3.0, 2.2, 'Jinger']
pop 方法可以删除列表的末尾元素,或者删除指定下标的元素:
a = [1, 3.0, 2.2]
a.pop()
print(type(a)) # <class 'list'>
print(a) # [1, 3.0]
a.pop(1)
print(type(a)) # <class 'list'>
print(a) # [1]
remove 方法可以删除列表中指定的元素:
a = [1, 3.0, 2.2, 3.0]
a.remove(3.0)
print(type(a)) # <class 'list'>
print(a) # [1, 2.2, 3.0]
注意:当列表中存在重复元素时,使用 remove 方法仅能删除第一次出现的元素。
in/not in 操作符可以判断某个元素是否在列表中,如果存在则返回 True,不存在则返回 False:
a = [1, 3.0, 2.2, 3.0]
print(3 in a) # True
print(3 not in a) # False
print(type(a)) # <class 'list'>
print(a) # [1, 3.0, 2.2, 3.0]
index 方法可以查询指定元素在列表中的下标:
a = [1, 3.0, 2.2, 3.0]
print(a.index(2.2)) # 2
通过 [] 下标访问操作符可以获取到列表中对应下标的元素(支持负索引):
a = [1, 3.0, 2.2, 3.0]
print(a[3]) # 3.0
通过 [] 下标访问操作符还可以修改列表中对应下标的元素的值:
a = [1, 3.0, 2.2, 3.0]
a[3] = 4
print(a) # [1, 3.0, 2.2, 4]
Python 中的 for 循环可以直接遍历列表中的元素:
a = [1, 3.0, 2.2, 3.0]
for iter in a:
print(iter)
但是对 iter 进行更改时,列表中的元素不会受到影响(可以理解为是将列表中对应元素的值赋值给了变量 iter,所以修改 iter 不会影响到列表中的元素):
a = [1, 3.0, 2.2, 3.0]
for iter in a:
iter += 1
print(iter) # 2 4.0 3.2 4.0
print(a) # [1, 3.0, 2.2, 3.0]
如果想要通过 for 循环来修改列表中的元素,可以使用 for 循环遍历列表元素下标的方式:
a = [1, 3.0, 2.2, 3.0]
n = len(a)
for i in range(n):
a[i] += 1
print(a[i]) # 2 4.0 3.2 4.0
print(a) # [2, 4.0, 3.2, 4.0]
while 循环也可以通过变量列表元素下标的方式来访问列表元素:
a = [1, 3.0, 2.2, 3.0]
n = len(a)
i = 0
while i < n: # 或者使用 while i in range(n)
a[i] += 1
print(a[i]) # 2 4.0 3.2 4.0
i += 1
print(a) # [2, 4.0, 3.2, 4.0]
以 [start:stop] 的方式可以从列表中提取出:从 start 起始下标开始,到 stop 结束下标结束的一组元素(左闭右开):
a = [1, 3.0, 2.2, 3.0]
b = a[1:2]
c = a[0:2]
d = a[0:3]
print(a) # [1, 3.0, 2.2, 3.0]
print(b) # [3.0]
print(c) # [1, 3.0]
print(d) # [1, 3.0, 2.2]
提取子列表的过程也称作切片的过程,以 [start:stop] 的方式进行切片时可以忽略起始下标和结束下标:
[start:] 的方式进行切片,则子列表的元素包括起始下标的元素及其后续所有元素;[:stop] 的方式进行切片,则子列表的元素包括结束下标之前的所有元素,不包括结束下标的元素;[:] 的方式进行切片,则子列表的元素包括原列表的所有元素。a = [1, 3.0, 2.2, 3.0]
b = a[1:2]
c = a[1:]
d = a[:2]
e = a[:]
print(a) # [1, 3.0, 2.2, 3.0]
print(b) # [3.0]
print(c) # [3.0, 2.2, 3.0]
print(d) # [1, 3.0]
print(e) # [1, 3.0, 2.2, 3.0]
注意:切片时所用下标支持负索引:
a = [1, 3.0, 2.2, 3.0]
b = a[-3:-1]
print(a) # [1, 3.0, 2.2, 3.0]
print(b) # [3.0, 2.2]
以 [start:stop:step] 的方式切片可以指定 step 步长(每访问一个元素后下标自增几步),例如:
a = [1, 3.0, 2.2, 3.0]
b = a[0:3:2]
print(a) # [1, 3.0, 2.2, 3.0]
print(b) # [1, 2.2]
注意:指定的步长可以为负数,表示从后往前提取元素。当步长为负数时,会从右向左遍历(反向切片),start 默认为最后一个元素,stop 默认为第一个元素(不包括),只有 start 大于 stop 才能切到元素:
a = [1, 3.1, 2.2, 3.0]
b = a[::-1]
c = a[3:0:-1]
d = a[-1::-2]
print(a) # [1, 3.1, 2.2, 3.0]
print(b) # [3.0, 2.2, 3.1, 1]
print(c) # [3.0, 2.2, 3.1]
print(d) # [3.0, 3.1]
如果在切片时,指定的下标超出了有效范围,运行程序不会抛异常,而是会尽可能将符合要求的元素提取出来:
a = [1, 3.0, 2.2, 3.0]
b = a[2:100:1]
c = a[100:0:-1]
print(a) # [1, 3.0, 2.2, 3.0]
print(b) # [2.2, 3.0]
print(c) # [3.0, 2.2, 3.0]
使用 + 操作符可以将两个列表拼接起来生成一个新列表,该操作不会影响两个原有列表:
a = [1, 3.1, 2.2, 3.0]
b = [2.2, 'Jinger']
c = a + b
print(a) # [1, 3.1, 2.2, 3.0]
print(b) # [2.2, 'Jinger']
print(type(c)) # <class 'list'>
print(c) # [1, 3.1, 2.2, 3.0, 2.2, 'Jinger']
使用 += 操作符可以将一个列表拼接到另一个列表后面:
a = [1, 3.1, 2.2, 3.0]
b = [2.2, 'Jinger']
b += a
print(a) # [1, 3.1, 2.2, 3.0]
print(b) # [2.2, 'Jinger', 1, 3.1, 2.2, 3.0]
使用 extend 方法也可以将一个列表拼接到另一个列表后面:
a = [1, 3.1, 2.2, 3.0]
b = [2.2, 'Jinger']
b.extend(a)
print(a) # [1, 3.1, 2.2, 3.0]
print(b) # [2.2, 'Jinger', 1, 3.1, 2.2, 3.0]
性能提示:
+=操作符和extend方法都可以将一个列表拼接到另一个列表后面,但是extend方法更高效。因为b += a等价于b = b + a,拼接过程中会先构造出一个临时列表作为拼接后的列表,再将 b 原本的列表释放,然后将这个临时列表赋值给 b。而extend方法则是直接将 a 列表的元素拼接到 b 列表后面,避免了不必要的释放操作。
Python 是一种面向对象的语言,因此创建出来的列表本质是一个对象,这些操作列表的方法都是列表的成员方法。列表的常用接口如下:
| 列表操作 | 方式 |
|---|---|
| 子列表提取 | this_list[start:stop:step] |
| 列表检查 | in 和 not in |
| 列表拼接 | + 和 += |
| 列表长度 | len() 函数 |
| 成员函数 | 功能 |
|---|---|
copy | 复制列表 |
clear | 清空列表 |
append | 在列表末尾添加一个元素 |
insert | 在列表指定下标插入一个元素 |
extend | 将列表元素(或任意可迭代对象的元素)添加到当前列表的末尾 |
pop | 删除列表中指定下标的元素(默认为末尾元素) |
remove | 删除列表中指定元素(首次出现) |
index | 返回列表中指定元素的下标(首次出现) |
count | 返回列表中指定元素的个数 |
reverse | 颠倒列表中元素的顺序 |
sort | 对列表中元素进行排序 |
本文介绍了 Python 数据类型——列表的相关概念及核心操作方法。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online