如何使用循环访问嵌套列表的元素

How to access an element of a nested list with loop

如何使用循环访问嵌套列表的元素?喜欢:

a = [20,[22,[3,[21],3], 30]]
               #^^ i want to access this

如何通过循环访问它,而不是使用

a[1][1][1][1]

接受任何语言的任何解决方案(最好python)

您是否在寻找类似的东西:

def get_inner_most(a):
  if not isinstance(a, list):
    return a
  elif len(a) == 0:
    return None
  elif len(a) == 1:
    return a[0]
  return get_inner_most(a[1])

你需要注意,它只会让你找到第一个最里面的元素,我希望这是你的要求。 例如对于输入 [20,[22,[3,[21],3], 30], [9,[4,[5,[6]]]]] 它仍然是 return 21 但不是 6。如果那是您的要求,即最大深度的元素,那么您需要更新您的问题。

它不是通过显式循环,但您可以使用 functoools.reduce() 函数,如下图所示:

from functools import reduce

def nested_getter(lst, *args):
    return reduce(lambda s, i: s[i], args, lst)


a = [20,[22,[3,[21]]]]
print(nested_getter(a, 1, 1, 1, 0))  # -> 21