Kam*_*nov 0 python recursion yield nested
我有以下代码,我需要它使用yield来解压缩列表:
def flat_list(array):
d=[]
for i in array:
if not isinstance(i, list):
yield i
else:
flat_list(i)
Run Code Online (Sandbox Code Playgroud)
例如,flat_list([1, [2, 2, 2], 4])应该返回[1, 2, 2, 2, 4]。我的代码返回[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)
Run Code Online (Sandbox Code Playgroud)
结果:
1
2
2
2
4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33 次 |
| 最近记录: |