【问题标题】:Python strange yield behavior in recursive function递归函数中的Python奇怪的屈服行为
【发布时间】:2018-11-13 12:40:49
【问题描述】:

这只是一个演示代码,用于了解递归函数中的屈服行为。我希望它返回一个可迭代列表 [5,4,3] 但它在第一次迭代时停止并且只返回 [5]

谁能解释为什么会这样?

def yield_test(input):
    if input > 3:
        yield_test(input-1)

    yield input

print(list(yield_test(5)))

输出:[5] 预期输出: [5、4、3]

【问题讨论】:

  • yield 是一个与 return 一样使用的关键字,但该函数将返回一个生成器。不是实际值。

标签: python recursion yield


【解决方案1】:

你需要 yield from yield_test() 并在你的函数中颠倒 yields 的顺序:

def yield_test(input):
    yield input

    if input > 3:
        yield from yield_test(input-1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2011-04-07
    • 2016-11-06
    • 2016-11-07
    • 2013-07-23
    相关资源
    最近更新 更多