例如:
我有一个列表
lst = [1, 2, [4, 6, 7, [11, 13] ], [46, 83], 5]我有一个索引列表,假设元素 13 为
index=[2,3,1](即(
lst[2][3][1]==13))我怎样才能将值从 13 更改为 14? 输入而不导入任何模块?
因此更新后的列表将是 [1, 2, [4, 6, 7, [11, 14] ], [46, 83], 5]
但是,解决方案应该是灵活的,因为索引列表会随着列表中每个元素的变化而变化。对于某些项目,其长度为 3(如元素 13),但对于某些元素,其长度约为 1(如元素 2,其索引为 index = [1])。
请您参考如下方法:
您只需要遍历索引列表,直到到达最后一个。为了简化该过程,我们可以将最后一个索引从其余索引中切分出来。
lst = [1, 2, [4, 6, 7, [11, 13] ], [46, 83], 5]
indices = [2, 3, 1]
newval = 14
*head, last = indices
temp = lst
for i in head:
temp = temp[i]
temp[last] = newval
print(lst)
输出
[1, 2, [4, 6, 7, [11, 14]], [46, 83], 5]
如果您正在运行一些旧版本的 Python,您可能需要将该切片分配更改为这个效率较低的版本:
head, last = indices[:-1], indices[-1]
