Python 数据类型 - 列表

Jinku Hu 2023年1月30日 2018年3月8日
  1. Python 创建列表
  2. 访问列表元素
  3. 向列表增加元素
  4. 从列表中删除元素
  5. 列表方法
  6. 列表成员检查
  7. Python 遍历列表元素
Python 数据类型 - 列表

本节来介绍 Python 列表,包含了列表索引、列表切片、附加或扩展列表等内容。

Python 创建列表

你可以通过使用方括号 [] 来创建列表。列表中的元素列在方括号内,并用逗号分隔开。列表中的元素可以是不同的数据类型。

l = []		# 空列表
l = [2, 4, 6, 8]		# 列表元素数据类型一致
l = [2, 'Python', 1+2j]		# 元素数据类型不同

你也可以创建一个嵌套列表,即列表中的元素为列表。

l = [[2,4,5], 'python']

访问列表元素

以下是你可以访问列表元素的一些方式:

列表索引

你可以使用索引来访问列表的元素,列表的索引从 0 开始。

>>> x = [2, 4, 6, 8, 10]
>>> print('x[0] =', x[0])			# 显示第一个元素
x[0] = 2
>>> print('x[0:2] =', x[0:2])		# 显示位于位置 0 和 1 的列表的前两个元素
x[0:2] = [2, 4]
>>> print('x[2:] =', x[2:])			# 显示位置 2 的元素(第三个元素)
x[2:] = [6, 8, 10]

列表中的元素可以被修改(更新、删除、添加),因为列表是可变类型的。如果索引超出列表索引范围,则会出现 IndexError

Warning
索引必须是一个整数,否则会出现 TypeError

负索引

Python 允许使用负索引来访问列表中的元素。例如,索引 -1 指的是最后一个元素。同样,索引 -2 指的是倒数第二项。

>>> l = [2, 4, 6, 8, 10]
>>> print(l[-1])
10
>>> print(l[-2])
8
>>> print(l[-3])
6

Python 列表切片

切片运算符用于从列表中提取一系列元素。

>>> l = [2, 4, 6, 8, 10]
>>> print(l[1:3])		# 打印从位置 1 到位置 3(不含 3)的元素
[4, 6]
>>> print(l[:2])		# 打印从开始到位置 2(不含 2)的元素
[2, 4]
>>> print(l[2:])		# 打印从位置 2(包含 2)开始的元素
[6, 8, 10]
>>> print(l[:])			# 打印整个列表
[2, 4, 6, 8, 10]

向列表增加元素

apend() 方法

你可以使用列表方法 append() 将一个元素追加到列表的末尾。

>>> l = [1, 3, 5, 7, 9, 11]
>>> l.append(13)
>>> print(l)
[1, 3, 5, 7, 9, 11, 13]

extend() 方法

append(x)x 作为一个元素追加到列表中。extend(x) 将给定数据对象 x 中的所有元素来都添加到列表中。

>>> l = [1, 3, 5, 7, 9, 11]
>>> l.append([13, 14, 15])
>>> print(l)
[1, 3, 5, 7, 9, 11, [13, 14, 15]] # 列表 [13, 14, 15]作为一个元素追加到列表 l 中
>>> l.extend([13, 14, 15])
>>> print(l)
[1, 3, 5, 7, 9, 11, 13, 14, 15]

+ 操作符

除了 extend() 方法,你还可以通过+ 操作符来连接两个列表。

>>> l = [2, 4, 6, 8, 10]
>>> print(l + [12, 14, 16])
[2, 4, 6, 8, 10, 12, 14, 16]

insert(i, x)

你可以使用 insert(i, x) 方法将元素 x 插入到列表索引位置 i 上。

>>> l = [2, 4, 6, 8, 10]
>>> l.insert(2, 0)
>>> print(l)
[2, 4, 0, 6, 8, 10]

从列表中删除元素

del 语句从列表中删除一个或多个元素。你也可以使用 del 删除整个列表:

>>> l = [2, 4, 6, 8, 10]
>>> del l[4]
>>> print(l)
[2, 4, 6, 8]
>>> del l[0:2]
>>> print(l)
[6, 8]
>>> del l
>>> print(l)
Traceback (most recent call last):
    print(l)
NameError: name 'l' is not defined

在列表被 del 删除后,在程序中继续引用这个列表 l 将会收到报错。如果你想清除一个列表,那么你也可以使用 clear() 方法。

列表方法

下表列出了具体的列表方法:

列表方法 描述
append() 将一个元素添加到列表的末尾
extend() 将多个元素添加到列表中。将一个列表中的所有元素添加到另一个列表中
insert() 在所需位置添加一个元素
remove() 从列表中删除特定元素
pop() 删除列表中索引位置为 index 的元素,并返回该元素
clear() 从列表中删除所有元素
index() 返回列表中第一个匹配元素的索引
count() 返回列表中给定参数的数量
sort() 按升序排序列表中的元素
reverse() 颠倒列表元素的顺序
copy() 返回一个已经存在的列表的拷贝

列表成员检查

Python in 关键字用来检查给定元素是否是列表的成员。

>>> l = [2, 4, 6, 8, 10]
>>> print(5 in l)
False
>>> print(2 in l)
True

Python 遍历列表元素

你可以使用 for 循环来遍历一个列表。

l = [2, 4, 6, 8, 10]
for i in l:
    print(i)
2
4
6
8
10

适用于列表的内置函数

下表是适用于列表的一些可以来执行不同任务的内置函数的集合:

内置函数 描述
all() 当列表中的所有元素都为 True 时返回 True。当列表为空时,它也返回 True
any() 当列表中的任何元素为 True 时返回 True。当列表为空时,它返回 False
enumerate() 将列表的所有元素的索引和值作为元组返回。它返回一个枚举对象
len() 返回列表中项目的数量或列表的长度
list() 将序列(元组,字符串,字典)转换为列表
max() 返回列表中的最大数字
min() 返回列表中的最小数字
sorted() 返回一个排序列表
sum() 返回列表中所有元素的总和
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn