我做的简单生成器功能:
def myfunc(text):
for i in text[::-1]:
yield(i)
for i in myfunc("anytext"):
print(i)
将首先评估生成器函数内的text[::-1]
,否则将懒惰地评估它(期望从生成器函数)?
答案 0 :(得分:2)
在迭代之前,文本将被反转。它不可能是任何其他方式; for
循环需要反转文本才能迭代它。
为了让它真正变得懒惰,你需要使用索引。
def myfunc(text):
for i in range(len(text) - 1, -1, -1):
yield text[i]
在Python 2中,使用xrange
代替range
。
当然,您基本上已经重新实现了内置函数reversed()
。