如何使用循环访问嵌套列表的元素
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
如何使用循环访问嵌套列表的元素?喜欢:
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