使用存储在另一个列表中的索引附加到列表

时间:2015-03-27 12:26:11

标签: python list

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中的元素数量也会发生变化。这就是为什么我需要一般方式使用cnew element附加到b

类似的东西:

b[*c].append('new element')

这当然不起作用,但会让我知道我之后会发生什么。

1 个答案:

答案 0 :(得分:1)

您可以使用operator.getitemreduce逐步进入嵌套列表。

将该项目插入位置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'