我正在尝试跳过嵌套列表中的所有其他列表。
filled_list = [1,2,3,[11,2,3,[111,2,3,[1111,2,3,4]]]]
def iterative_list(value):
while isinstance(value[-1], list):
a, *_, value = value
yield a
yield value[0]
z = iterative_list(filled_list)
我该怎么做,以便输出来自
[1, 11, 111, 1111]
迭代解析列表。
到
[1, 111,]
迭代解析列表。
我知道您可以用[:: 2]表示法跳过列表中的所有其他元素的概念,但是如何将其应用于嵌套列表?
答案 0 :(得分:2)
将所有a
附加到一个列表,然后将return
附加到列表,例如:
def iterative_list(value):
l=[]
while isinstance(value[-1], list):
a, *_, value = value
l.append(a)
l.append(a)
return l[::2]
现在:
print(iterative_list(filled_list))
是:
[1, 111]
答案 1 :(得分:2)
您可以在无限循环中使用try-except
块来获取内部内部列表,直到它捕获到TypeError
或IndexError
:
def iterative_list(value):
while True:
try:
yield value[0]
value = value[-1][-1]
except (TypeError, IndexError):
break
使list(iterative_list(filled_list))
返回:
[1, 111]
答案 2 :(得分:1)
具有递归的生成器:
def iterative_list(value):
try:
yield value[0]
yield from iterative_list(value[-1][-1])
except TypeError:
return
示例:
list(iterative_list(filled_list))
Out: [1, 111]