我的python生成器功能真的很懒吗?

时间:2017-05-09 05:44:44

标签: python generator

我做的简单生成器功能:

def myfunc(text):
    for i in text[::-1]:
        yield(i)

for i in myfunc("anytext"):
    print(i)

将首先评估生成器函数内的text[::-1],否则将懒惰地评估它(期望从生成器函数)?

1 个答案:

答案 0 :(得分:2)

在迭代之前,文本将被反转。它不可能是任何其他方式; for循环需要反转文本才能迭代它。

为了让它真正变得懒惰,你需要使用索引。

def myfunc(text):
    for i in range(len(text) - 1, -1, -1):
        yield text[i]

在Python 2中,使用xrange代替range

当然,您基本上已经重新实现了内置函数reversed()