在Python中创建二维矩阵的更优雅方法
可能重复的问题:
如何在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)