Python: next() function(Python:下一个()函数)
问题描述
我正在从一本书中学习 Python,我遇到了这个例子:
I'm learning Python from a book, and I came across this example:
M = [[1,2,3],
[4,5,6],
[7,8,9]]
G = (sum(row) for row in M) # create a generator of row sums
next(G) # Run the iteration protocol
由于我是一个绝对的初学者,并且作者没有对示例或 next() 函数提供任何解释,所以我不明白代码在做什么.
Since I'm an absolute beginner, and the author hasn't provided any explanation of the example or the next() function, I don't understand what the code is doing.
推荐答案
表达式 (sum(row) for row in M)
创建了所谓的 generator.此生成器将为 M
中的每一行计算一次表达式 (sum(row)
).但是,生成器还没有做任何事情,我们只是设置好了.
The expression (sum(row) for row in M)
creates what's called a generator. This generator will evaluate the expression (sum(row)
) once for each row in M
. However, the generator doesn't do anything yet, we've just set it up.
语句next(G)
实际上运行 M
上的生成器.因此,如果您运行一次 next(G)
,您将获得第一行的总和.如果你再次运行它,你会得到第二行的总和,以此类推.
The statement next(G)
actually runs the generator on M
. So, if you run next(G)
once, you'll get the sum of the first row. If you run it again, you'll get the sum of the second row, and so on.
>>> M = [[1,2,3],
... [4,5,6],
... [7,8,9]]
>>>
>>> G = (sum(row) for row in M) # create a generator of row sums
>>> next(G) # Run the iteration protocol
6
>>> next(G)
15
>>> next(G)
24
另见:
- 关于生成器的文档
- 关于 yield 表达式的文档(包含一些关于生成器的信息)
- Documentation on generators
- Documentation on yield expressions (with some info about generators)
See also:
这篇关于Python:下一个()函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python:下一个()函数


基础教程推荐
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 筛选NumPy数组 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01