如何在python中使用for循环追加多维数组

时间:2017-04-08 06:59:24

标签: python arrays

我正在尝试append到一个多维数组。

这是我到目前为止所做的:

arr=[[]]
for i in range(10):
    for j in range(5):
        arr[i].append(i*j)
        print i,i*j


print arr

这是我的预期输出:

  

[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8],[0,3,6,9,12],[0,4,8,12,16],[0,5,10,15,20],[0,6,12,18,24],[0,7,14,21,28],[0,8,16,24,32],[0,9,18,27,36]]

但是,我收到此错误:

  

IndexError:列表索引超出范围

4 个答案:

答案 0 :(得分:5)

您需要按以下方式定义初始数组:arr=[[] for i in range(10)],因为您无法将值附加到不存在的数组(这是i>=1时发生的情况)。因此代码应如下所示:

arr=[[] for i in range(10)]
for i in range(10):
    for j in range(5):
        arr[i].append(i*j)
        print(i,i*j)


print(arr)

答案 1 :(得分:2)

您忘记事先附加空列表。因此,当您尝试IndexError时,为什么会得到arr[i]

arr = []
for i in range(10):
    arr.append([])
    for j in range(5):
        arr[i].append(i*j)

答案 2 :(得分:2)

作为others have pointed out,您需要确保您的列表列表最初填充了十个空列表(而不是一个),以便连续的元素正确append

但是,我可能建议使用terser嵌套列表理解,这样可以通过在单个语句中创建列表来完全避免问题:

arr = [[i*j for j in range(5)] for i in range(10)]

答案 3 :(得分:0)

您只使用1个元素作为arr初始化array,因此当i大于0时,您会出现此类错误。您可以使用list comprehensive归档您的目的:

[[i * j for j in range(5)] for i in range(10)]