首页 > 解决方案 > 当你不能显式使用嵌套元组的索引时,如果你有元组的深度,如何引用一个值?

问题描述

假设表单中有一个元组

    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时?

简而言之,有没有一种方法可以使用每次都会递增的整数,以便在代码本身内它可以做到这一点:

1次:

    J[1]

2次:

    J[1][1]

3次:

    J[1][1][1]

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

我真正苦苦挣扎的部分是在每次深度变化时找到一个表达式来引用元组中的元素。因为它将涉及具有不同数量的括号。例如

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

我在这里先向您的帮助表示感谢!

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

标签: pythonjupyter-notebooktuples

解决方案


使用循环。

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

推荐阅读