Python';s相当于F#和#x27;让我们屈服吧!(产量爆炸)?

Python';s相当于F#和#x27;让我们屈服吧!(产量爆炸)?,python,python-3.x,Python,Python 3.x,假设我在F#中有以下代码: 此代码可以称为从0开始的所有数字,生成从0到无穷大的所有数字。 我知道Python还有一个yield关键字,它的行为似乎很像F#的yield操作符。我的问题是,是否还有某种等价于F#syield操作员 谢谢相当于Python的特性是 def来自(k)的所有数字: 产量k 从(k+1)的所有_数_得出的收益率 然而,这将创建大量链式生成器,在Python中是一个糟糕的实现。看看有没有更好的选择 相当于Python的特性是 def来自(k)的所有数字: 产量k 从(k+

假设我在F#中有以下代码:

此代码可以称为从0开始的所有数字,生成从0到无穷大的所有数字。 我知道Python还有一个
yield
关键字,它的行为似乎很像F#的
yield
操作符。我的问题是,是否还有某种等价于F#s
yield操作员


谢谢

相当于Python的特性是

def来自(k)的所有数字:
产量k
从(k+1)的所有_数_得出的收益率

然而,这将创建大量链式生成器,在Python中是一个糟糕的实现。看看有没有更好的选择

相当于Python的特性是

def来自(k)的所有数字:
产量k
从(k+1)的所有_数_得出的收益率

然而,这将创建大量链式生成器,在Python中是一个糟糕的实现。看看有没有更好的选择

虽然您正在寻找的构造是
yield from
,但在Python中递归定义此函数(co)效率极低。使用迭代

def all_numbers_from(k):
    while True:
        yield k
        k = k + 1

或者只使用
itertools.count(k)
yield from
是您要寻找的构造,在Python中递归定义此函数(co)效率极低。使用迭代

def all_numbers_from(k):
    while True:
        yield k
        k = k + 1

或者只需使用
itertools.count(k)

如果您能解释F#
产生的结果,可能会有所帮助可以。在黑暗中拍摄:你在寻找吗?@JonathonReinhart:可以从上面的片段推断出来,但我会解释:
yield
返回一个值,
yield!X
大致相当于在
X
上进行迭代,生成其所有值(当然是惰性的)。是的,看起来像是
yield from
@OmnowneDealysium,你可以用它来将解释添加到你的实际帖子中。如果你解释F#
的收益率,可能会有所帮助可以。在黑暗中拍摄:你在寻找吗?@JonathonReinhart:可以从上面的片段推断出来,但我会解释:
yield
返回一个值,
yield!X
大致相当于在
X
上进行迭代,产生所有的值(当然是惰性的)。是的,看起来像是
@OwnedeLysum中产生的收益。你可以用它来将解释添加到你的实际帖子中。