如何在Python中初始化二维元素的一维数组?
我想初始化一个包含X个二维元素的数组。例如,如果X=3,我希望它是[[0,0],[0,0],[0,0]]。我知道[0]*3给出了[0,0,0],但如何对二维元素做到这一点呢?我相信这是如何在Python中初始化二维元素的一维数组?,python,arrays,Python,Arrays,我想初始化一个包含X个二维元素的数组。例如,如果X=3,我希望它是[[0,0],[0,0],[0,0]]。我知道[0]*3给出了[0,0,0],但如何对二维元素做到这一点呢?我相信这是[[0,0],]*3试试这个: m = [[0] * 2 for _ in xrange(3)] 在上面的代码中,将3视为矩阵中的行数,2视为列数。0是要用于初始化元素的值。请记住:如果您使用的是Python 3,请使用range而不是xrange 要获得更通用的解决方案,请使用此功能: def create_m
[[0,0],]*3
试试这个:
m = [[0] * 2 for _ in xrange(3)]
在上面的代码中,将3
视为矩阵中的行数,2
视为列数。0
是要用于初始化元素的值。请记住:如果您使用的是Python 3,请使用range
而不是xrange
要获得更通用的解决方案,请使用此功能:
def create_matrix(m, n, initial=0):
return [[initial] * n for _ in xrange(m)]
关于问题的具体情况:
m = create_matrix(3, 2)
print m
> [[0, 0], [0, 0], [0, 0]]
或者,如果您不介意使用numpy
,您可以使用numpy.zeros()
函数,如Mellkor的答案所示。我想这是很有用的。说
x=4
numpy.zeros((x,x))
将为您提供:
数组([[0,0,0,0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[0,0,0,0.]]
使用构造
[[0,0]]*3
工作正常,并返回以下内容:
[[0,0],[0,0],[0,0],[0,0]]
它的工作方式是将列表中的内容作为一个列表多次添加到自己的列表中,基本上是[[0,0],][0,0],][0,0],][0,0],][0,0],][0,0],][0],][0,0],][0],][/code>。尝试更改其中一个元素,您将看到所有三个子列表都更改。此解决方案已失败。它会创建两个元素的同一列表的3个副本,当您尝试修改其中一个元素时,所有其他元素也会被修改。大多数情况下,在Python中,如果您考虑将容器“初始化”为一堆0,那么您就错了。我正在为Google代码Jam练习,我必须读取一系列数字,例如2、3、1,4,5,2并将其转换为[[2,3],[1,4],[5,2]]。你还有什么建议吗?我建议在收到这些数字时将其添加到空列表中。