在Python中创建二维矩阵的更优雅方法

16 投票
4 回答
44636 浏览
提问于 2025-04-17 08:07

可能重复的问题:
如何在Python中初始化一个二维数组?

我一直是这样写这段代码的:每次需要的时候,我就用这段Python代码:

for x in range(8):
        a.append([])
        for y in range(8):
            a[x].append(0)

不过,我想知道有没有更好看的写法。我是说,如何在Python中创建一个二维矩阵,并用0填充它呢?

4 个回答

3

列表推导式更简洁。

a = [[0 for i in xrange(8)] for i in xrange(8)]
print a

或者,如果你打算对数组进行数值计算,可以使用numpy数组Numpy.zeros这个函数可以创建一个全是零的多维数组。

import numpy as np

a = np.zeros((8,8))
3

试试这个:

a = [[0]*8 for _ in xrange(8)]

这个方法使用了列表推导式,并且利用了 * 运算符可以用来填充列表,生成 n 个相同元素的特性。

或者更好的是,写一个通用的函数来返回指定大小的矩阵:

# m: number of rows, n: number of columns
def create_matrix(m, n):
    return [[0]*n for _ in xrange(m)]

a = create_matrix(8, 8)
20

使用嵌套列表推导式

a = [[0 for y in range(8)] for x in range(8)]

这相当于

a = []
for x in range(8):
    row = []
    for y in range(8):
        row.append(0)
    a.append(row)

撰写回答