python 中使用 yield 的嵌套列表的递归问题
recursion problem with nested lists using yield in python
我有如下代码,我需要它使用 yield 解压列表:
def flat_list(array):
d=[]
for i in array:
if not isinstance(i, list):
yield i
else:
flat_list(i)
例如flat_list([1, [2, 2, 2], 4])
应该return[1, 2, 2, 2, 4]
。我的代码 returns [1, 4]
.
我从前面的了解到,我不仅需要递归调用一个函数,还需要指定它应该做什么。
但是如何将 flat_list(i)
项添加到 yield
项?类似于 flat_list(i).extend(yield i)
.
您应该放弃 flat_list(i)
调用生成的所有项目。您可以使用 yield from
.
执行此操作
def flat_list(array):
for i in array:
if not isinstance(i, list):
yield i
else:
yield from flat_list(i)
for x in flat_list([1, [2, 2, 2], 4]):
print(x)
结果:
1
2
2
2
4
我有如下代码,我需要它使用 yield 解压列表:
def flat_list(array):
d=[]
for i in array:
if not isinstance(i, list):
yield i
else:
flat_list(i)
例如flat_list([1, [2, 2, 2], 4])
应该return[1, 2, 2, 2, 4]
。我的代码 returns [1, 4]
.
我从前面的
但是如何将 flat_list(i)
项添加到 yield
项?类似于 flat_list(i).extend(yield i)
.
您应该放弃 flat_list(i)
调用生成的所有项目。您可以使用 yield from
.
def flat_list(array):
for i in array:
if not isinstance(i, list):
yield i
else:
yield from flat_list(i)
for x in flat_list([1, [2, 2, 2], 4]):
print(x)
结果:
1
2
2
2
4