python - 我的Python生成器函数真的很懒吗?

标签 python generator

我制作的简单生成器函数:

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/

相关文章:

javascript - 如何使用React从Fantasy Premier League检索授权信息

python - windows下载pymssql时FreeTDS安装在哪里?

python - 获取带有 tkinter.filedialog.asksaveasfilename 的文件名以附加到其中

javascript - 从生成器内部使用的迭代器回调中产生

javascript - 如何在 javascript 中使用嵌套函数作为生成器(使用 "inner"产量)

Python生成器, 'coroutine'中的非吞咽异常

java - 如何从 2D 表格上设置的房间列表(给定房间大小)生成房间以及它们之间的连接?

python - 如何使用 python 将数据框附加到基于 header 的现有 Excel 文件

python - Flask 应用程序使用 PyInstaller 打包,EXE 中不包含任何模板或静态内容

algorithm - 特殊的完美迷宫生成算法