当不能显式使用嵌套元组的索引时,如果具有元组的深度,如何引用值?

2024-05-14 15:18:06 发布

您现在位置:Python中文网/ 问答频道 /正文

假设表单中有一个元组

    J = ((1),((2),((3),((4), (7,7))))) 

您需要根据for循环中发生的迭代次数来更改索引J的值

这个问题涉及到用整数替换第二个元组,但是由于每次都使用for循环,因此引用的深度将不同

目标: 使用元组中的值执行操作,并用值替换该元组

我知道

    list(J)[1][1][1][1] 

将等于我要更改的(7,7)值

但是假设我有索引-4的深度。有没有办法将其作为变量和代码来引用

    list(J)[1][1][1][1] 

用4而不是用硬编码的方式键入每个括号? 原因是,我想在for循环中包含赋值

例如

    list(J)"[1]"*depthvariable = changed value 

或者什么,等于

    list(J)[1][1][1][1] = changed value 

当depthvariable等于4时

简言之,是否有一种方法可以使用每次递增的整数,以便在代码本身中执行此操作:

第一次:

    J[1]

两次:

    J[1][1]

三次:

    J[1][1][1]

如果我在J中使用jelement,那么我将丢失整个变量。我不想获取J元组中的元素,我需要保留整个变量。我只是想改变J中的某些元素,但我不确定如何编码,如果我在for循环中每次看到的深度都不同

我一直在努力寻找一个表达式,在深度每次改变时引用元组中的元素。 因为它将包含不同数量的括号。 例如

    J[1], J[1][1] etc. 

提前谢谢你的帮助

编辑: 重要的是,我可以使用可变深度索引更改J本身


Tags: 代码元素表单目标编码forvalue整数
2条回答

使用循环

J = ((1),((2),((3),((4), (7,7)))))
cur = J
depthvariable = 4
for _ in range(depthvariable):
    cur = cur[1]
print(cur)

您可以使用reduceoperator.getitem

from functools import reduce
from operator import getitem

J = ((1),((2),((3),((4), (7,7)))))

print(reduce(getitem, [1] * 4, J))

相关问题 更多 >

    热门问题