假设我在 F# 中有以下代码:
let rec all_numbers_from k =
yield k
yield! all_numbers_from (k+1)
Run Code Online (Sandbox Code Playgroud)
这段代码可以称为all_numbers_from 0,生成从 0 到无穷大的所有数字。我知道 Python 也有一个yield关键字,它的行为似乎与 F# 的yield运算符非常相似。我的问题是是否还有某种等效于 F# 的yield!运算符?
虽然yield from是您正在寻找的构造,但在 Python 中(共同)递归地定义此函数的效率非常低。使用迭代
def all_numbers_from(k):
while True:
yield k
k = k + 1
Run Code Online (Sandbox Code Playgroud)
或者只是使用itertools.count(k).
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |