【问题标题】:recursion problem with nested lists using yield in python [duplicate]在python中使用yield嵌套列表的递归问题[重复]
【发布时间】:2020-02-24 17:50:56
【问题描述】:

我有一个代码如下,我需要它来使用 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]) 应该返回 [1, 2, 2, 2, 4]。我的代码返回[1, 4]

我从之前的question 了解到,我不仅需要递归调用一个函数,还需要指定它应该做什么。

但是如何将flat_list(i) 项目添加到yield 项目?类似flat_list(i).extend(yield i)

【问题讨论】:

  • d 未使用。 yield 时不需要在函数中填写列表

标签: python recursion nested yield


【解决方案1】:

您应该生成由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

【讨论】:

  • d=[] 是干什么用的?
  • 错误,来自旧代码草案
猜你喜欢
  • 1970-01-01
  • 2021-10-08
  • 2016-11-05
  • 2021-08-15
  • 2018-06-24
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 2021-01-12
相关资源
最近更新 更多