python - 递归函数中的Python奇怪的屈服行为
问题描述
这只是一个演示代码,用于了解递归函数中的屈服行为。我希望它返回一个可迭代列表 [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 from yield_test()
反转 s 的顺序:yield
def yield_test(input):
yield input
if input > 3:
yield from yield_test(input-1)
推荐阅读
- java - 在 JBoss EAP 7.3 中,日志没有写入应用程序特定的日志文件
- pandas - 如何使用 Pandas 计算两列之间的差异百分比?
- autodesk-forge - `Autodesk.Viewing.ScreenShot.getScreenShotWithBounds` 使用查看器的默认相机尺寸而不是边界
- r - R:如何使用索引列聚合数据框?
- assembly - 有时会给出错误的答案
- c# - 在asp net core web api中进行模型绑定时忽略XML命名空间
- php - 如何在 Shopware 6 中导入期间替换(不添加)属性?
- javascript - javascript中的API搜索仅返回过滤列表
- javascript - 除非我刷新页面,否则集成在选项卡中的手风琴不起作用
- windows-10 - FileCreateError: [Errno 24] 打开的文件太多 | Windows 10、Python、Spyder IDE