与this question一致,我正在寻找一种方法将元素附加到列表中,其中指向列表中应该追加的位置的索引存储在另一个列表中。
考虑清单:
b = [[[[[0.2], [3]], [[4.5], [78]], [[1.3], [0.23]], [[6.], [9.15]]],
[[[3.1], [44]], [[1.], [66]], [[0.18], [2.3]], [[10], [7.5]]],
[[[3], [4.]], [[12.3], [12]], [[7.8], [3.7]], [[1.2], [2.1]]]]]
和索引存储在:
c = [0, 0, 0, 1]
我需要使用c
中存储的索引将元素附加到b
中的该位置。
这不会起作用:
b[c[0]][c[1]][c[2]][c[3]].append('new element')
因为b
的形状随着我的代码的每次运行而变化,因此c
中的元素数量也会发生变化。这就是为什么我需要一般方式使用c
将new element
附加到b
。
类似的东西:
b[*c].append('new element')
这当然不起作用,但会让我知道我之后会发生什么。
答案 0 :(得分:1)
您可以使用operator.getitem
和reduce
逐步进入嵌套列表。
将该项目插入位置c[:-1]
的子列表c[-1]
:
>>> reduce(operator.getitem, c[:-1], b).insert(c[-1], "new")
或者将项目附加到子列表c
:
>>> reduce(operator.getitem, c, b).append("new")
要检索索引c
处的项目:
>>> reduce(operator.getitem, c, b)
'new'