📜  2D 的列表理解如何工作 (1)

📅  最后修改于: 2023-12-03 14:38:51.272000             🧑  作者: Mango

2D 的列表理解如何工作

2D 列表是包含多个子列表的列表,每个子列表都是相同长度的。在 Python 中,可以使用列表理解(List Comprehension)来生成 2D 列表。

生成 2D 列表

要生成一个 3x3 的 2D 列表,可以使用以下列表理解:

matrix = [[0 for j in range(3)] for i in range(3)]
print(matrix)

输出:

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

这个列表理解中,外层的 for 循环控制子列表的数量,内层的 for 循环控制每个子列表的元素数量。在这个例子中,我们使用了一个内层列表理解 [0 for j in range(3)] 来生成包含 3 个 0 的子列表,然后用外层列表理解 [[0 for j in range(3)] for i in range(3)] 生成包含 3 个子列表的列表。

访问和修改 2D 列表

访问 2D 列表的元素可以使用双重下标:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[1][2])  # 输出 6

要修改 2D 列表中的元素,可以直接使用双重下标进行赋值:

matrix[1][2] = 0
print(matrix)

输出:

[[1, 2, 3], [4, 5, 0], [7, 8, 9]]
常见用途

2D 列表可以用于各种需要存储矩阵或表格数据的场合,比如图像处理、数值计算、游戏开发等。下面给出一个简单的例子,使用 2D 列表实现矩阵加法:

def matrix_add(m1, m2):
    nrows, ncols = len(m1), len(m1[0])
    result = [[0 for j in range(ncols)] for i in range(nrows)]
    for i in range(nrows):
        for j in range(ncols):
            result[i][j] = m1[i][j] + m2[i][j]
    return result

a = [[1, 2], [3, 4]]
b = [[5, 6], [7, 8]]
c = matrix_add(a, b)
print(c)

输出:

[[6, 8], [10, 12]]

在这个例子中,我们定义了一个 matrix_add 函数,它接受两个相同大小的矩阵作为参数,返回它们的和。在函数中,我们首先创建一个和输入矩阵相同大小的零矩阵,然后遍历输入矩阵的每个元素,计算它们的和,并存入结果矩阵中。