我制作的简单生成器函数:
def myfunc(text):
for i in text[::-1]:
yield(i)
for i in myfunc("anytext"):
print(i)
生成器函数内的text[::-1]
将首先被评估还是将被延迟评估(预期来自生成器函数)?
最佳答案
文本在迭代之前将被反转。不可能有其他方式; for
循环需要反转文本才能对其进行迭代。
要使其真正变得懒惰,您需要使用索引。
def myfunc(text):
for i in range(len(text) - 1, -1, -1):
yield text[i]
在 Python 2 中,使用 xrange
代替 range
。
当然,您基本上已经重新实现了内置函数reversed()
。
关于python - 我的Python生成器函数真的很懒吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43861963/