我开始使用python,我尝试使用一个二维列表,我开始在每个地方都用相同的变量填充。我想到了这个:

def initialize_twodlist(foo):
    twod_list = []
    new = []
    for i in range (0, 10):
        for j in range (0, 10):
            new.append(foo)
        twod_list.append(new)
        new = []

它给出了预期的结果,但感觉像是一种变通方法。有更简单/更短/更优雅的方法吗?


当前回答

我理解的重要的事情是:在初始化数组(在任何维度)时,我们应该给数组的所有位置一个默认值。然后只完成初始化。在此之后,我们可以更改或接收数组的任何位置的新值。下面的代码非常适合我

N=7
F=2

#INITIALIZATION of 7 x 2 array with deafult value as 0
ar=[[0]*F for x in range(N)]

#RECEIVING NEW VALUES TO THE INITIALIZED ARRAY
for i in range(N):
    for j in range(F):
        ar[i][j]=int(input())
print(ar)

其他回答

通常,当你想要多维数组时,你不想要一个列表的列表,而是一个numpy数组,或者可能是一个dict。

例如,使用numpy可以执行如下操作

import numpy
a = numpy.empty((10, 10))
a.fill(foo)

在Python中初始化一个二维数组:

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

我理解的重要的事情是:在初始化数组(在任何维度)时,我们应该给数组的所有位置一个默认值。然后只完成初始化。在此之后,我们可以更改或接收数组的任何位置的新值。下面的代码非常适合我

N=7
F=2

#INITIALIZATION of 7 x 2 array with deafult value as 0
ar=[[0]*F for x in range(N)]

#RECEIVING NEW VALUES TO THE INITIALIZED ARRAY
for i in range(N):
    for j in range(F):
        ar[i][j]=int(input())
print(ar)

[[foo for x in xrange(10)] for y in xrange(10)]

要在Python中初始化二维列表,使用

t = [ [0]*3 for i in range(3)]

但是不要使用[[v]*n]*n,这是一个陷阱!

>>> a = [[0]*3]*3
>>> a
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> a[0][0]=1
>>> a
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]