我开始使用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 = []

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


当前回答

我用这种方式来创建MxN矩阵,其中m = number(行)和n = number(列)。

arr = [[None]*(n) for _ in range(m)]

其他回答

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

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

要在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]]

我用这种方式来创建MxN矩阵,其中m = number(行)和n = number(列)。

arr = [[None]*(n) for _ in range(m)]

如果你使用numpy,你可以很容易地创建2d数组:

import numpy as np

row = 3
col = 5
num = 10
x = np.full((row, col), num)

x

array([[10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10]])

如果它是一个稀疏填充的数组,你可能最好使用一个以元组为键的字典:

dict = {}
key = (a,b)
dict[key] = value
...