将值附加到正确的位置

时间:2018-05-02 11:48:55

标签: python python-3.x

对于以下声明的列表:

a =[[array([0, 1, 2, 3, 4])], [array([0, 1, 2]), array([3, 4])], [array([0, 1]), array([2, 3]), array([4])]]
t= [[[]], [[], []], [[], [], []]]

我写了一个代码,如下所示。 (人们可以很容易地看到't'与'a'到二阶的尺寸相同)

 import numpy as np
 for i in range(3):
    for j in range(len(a[i])):
       for k in range(len(a[i][j])-1):
           p = k*(a[i][j][k+1]-a[i][j][k])
           print(p)
       t[i][j].append(p)
       print(t)

这适用于'p'的输出,如下所示:

0
1
2
3
0
1
0
0
0

然而,t的输出值是意外的。 我实际上期待以下形式的't',其中'p'的值会转到相应的子列表。

t=[[[0,1,2,3]],[[0,1],[0]],[[0],[0],[0]]]

我不明白我代码中的缺陷。

有什么方法可以获得't'的预期结果? 请帮忙。 谢谢。

1 个答案:

答案 0 :(得分:1)

t[i][j].append(p)的缩进错误?虽然很难理解你想要达到的目标,但是下面的结果与你期望的结果非常相似。

for i in range(3):
   for j in range(len(a[i])):
      for k in range(len(a[i][j])-1):
          p = k*(a[i][j][k+1]-a[i][j][k])
          #print(p)
          t[i][j].append(p)
print(t)

打印:

[[[0, 1, 2, 3]], [[0, 1], [0]], [[0], [0], []]]