4.1 列表与切片
列表(list)用于保存一组有顺序的数据。列表使用方括号 [] 创建,元素之间用逗号分隔。列表的下标(index)从 0 开始,因此第一个元素是 lst[0],不是 lst[1]。
访问列表元素
Python 支持正向索引,也支持反向索引(negative index)。反向索引从 -1 开始,表示最后一个元素。
python
lst = [1, 2, 3]
print(lst[0]) # 1
print(lst[1]) # 2
print(lst[2]) # 3
print(lst[-1]) # 3
print(lst[-2]) # 2如果访问不存在的位置,例如 lst[3],程序会抛出 IndexError。这是初学者很常见的异常(exception):列表长度是 3,合法正向下标只有 0, 1, 2。
正在加载概念检查...
列表拼接与重复
+ 可以拼接两个列表,* 可以重复一个列表。
python
lst = [1, 2, 3] + [4, 5, 6]
print(lst) # [1, 2, 3, 4, 5, 6]
lst = [1, 2, 3] * 3
print(lst) # [1, 2, 3, 1, 2, 3, 1, 2, 3]注意
[1, 2, 3] + [4] 得到的是新列表;而 append()、insert() 这类方法(method)会直接修改原列表。正在加载交互实验...
in 运算符
in 用于判断某个元素是否存在于序列(sequence)中,结果是布尔值。
python
languages = ["C", "C++", "Python", "Java"]
key = input("请输入一种编程语言:")
if key in languages:
print("已找到")
else:
print("未找到")一次可能的运行结果:
text
请输入一种编程语言:Python
已找到in 不是只适用于列表,它也可以用于元组、集合、字符串和字典。只是对字典使用 in 时,默认检查的是键(key)。
切片
切片(slice)用于截取序列的一部分。基本格式是:
python
lst[start:end:step]start:开始位置,包含。end:结束位置,不包含。step:步长,默认为1。
python
lst = list(range(10))
print(lst) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(lst[2:7]) # [2, 3, 4, 5, 6]
print(lst[:5]) # [0, 1, 2, 3, 4]
print(lst[3:]) # [3, 4, 5, 6, 7, 8, 9]
print(lst[::2]) # [0, 2, 4, 6, 8]正在加载交互实验...
正在加载概念检查...
正在加载本节练习...
二维列表
二维列表可以看成“列表中的列表”。它经常用于表示表格、棋盘和矩阵(matrix)。
python
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
]
print(matrix[0][0]) # 1
print(matrix[1][2]) # 7matrix[1][2] 的意思是:先取第 1 行(row),再取这一行里的第 2 列(column)。两个下标都从 0 开始。
矩阵加法可以用嵌套循环完成。外层循环控制行,内层循环控制列。
矩阵加减法要求两个矩阵形状相同。如果 和 都是 矩阵,那么结果矩阵也是 。所谓“一一对应”,就是第 行第 列只和另一个矩阵的第 行第 列计算。
矩阵一一对应运算
131012+007521=138533
131012-007521=13-6-5-11
python
A = [
[1, 3],
[1, 0],
[1, 2]
]
B = [
[0, 0],
[7, 5],
[2, 1]
]
C = []
print("矩阵加法")
for i in range(3):
C.append([])
for j in range(2):
C[i].append(A[i][j] + B[i][j])
print("%3d" % C[i][j], end='')
print()运行结果:
text
矩阵加法
1 3
8 5
3 3