我想在给定索引列表的任意嵌套列表中设置一个元素。例如,假设我们有列表:
a = [[1, 2], [3, 4, 5]]
我们可以这样设置一个元素:
a[1][2] = 9
修改后的列表a是:
[[1, 2], [3, 4, 9]]
我想根据索引列表设置此元素:[1, 2]。
谢谢!
为清楚起见进行编辑:索引列表的长度可能会有所不同。例如,给定索引列表:idx = [1, 2],按照建议,我们可以这样做:
a[idx[0]][idx[1]] = 9
然而,在更一般的情况下,idx 可以是任意长度。我想要这样的东西:
a[idx[i_1]][idx[i_2]][...][idx[i_n]] = 9
请您参考如下方法:
我找到了一个解决方案:
def set_in_list(a, idx, val):
"""
Set an element to value `val` in a nested list `a`. The position
of the element to set is given by the list `idx`.
Example:
`a` = [[1, 2], [3, [4, 5], 6], [7]]
`idx` = [1,1,0]
`val` = 9
==> `a` = [[1, 2], [3, [9, 5], 6], [7]]
"""
for i in range(len(idx) - 1):
a = a[idx[i]]
a[idx[-1]] = val
