Python:next()函数

8 浏览
0 Comments

Python:next()函数

我正在从一本书中学习Python,并遇到了这个例子:\n

M = [[1,2,3],
     [4,5,6],
     [7,8,9]]
G = (sum(row) for row in M) # 创建一个行求和的生成器
next(G) # 运行迭代协议

\n由于我是一个完全的新手,并且作者没有对这个例子或next()函数进行任何解释,我不理解这段代码在做什么。

0
0 Comments

Python中的next()函数用于获取生成器(generator)中的下一个元素。生成器是一种特殊类型的迭代器,可以按需生成值,而不是一次性生成所有值。

在给定的内容中,我们可以看到作者使用了一个生成器表达式来创建一个生成器G。生成器G会根据表达式"("+str(row[2])+";"+str(row[1])+";"+str(row[0])+")"来生成值。然后,通过连续调用G.next()函数,作者获取了生成器中的前三个元素。这些元素是将矩阵M中的每一行转换为字符串的结果。

生成器的出现是为了解决以下问题:

在某些情况下,我们可能不希望一次性生成所有值,而是按需生成值。这样可以节省内存空间,并且在处理大型数据集时更加高效。生成器提供了这样的功能,它可以按需生成值,而不是一次性生成所有值。

关于生成器的解决方法是使用生成器表达式或生成器函数来创建生成器。生成器表达式可以用于创建简单的生成器,而生成器函数可以用于创建更复杂的生成器。通过调用生成器的next()函数,可以获取生成器中的下一个值。

文章总结:

在Python中,我们可以使用生成器来按需生成值,而不是一次性生成所有值。生成器可以通过生成器表达式或生成器函数来创建。通过调用生成器的next()函数,我们可以获取生成器中的下一个值。生成器的出现是为了节省内存空间并提高处理大型数据集的效率。

0
0 Comments

Python中的next()函数用于迭代生成器中的下一个元素。生成器是一种特殊的函数,它可以在需要时生成序列中的值,而不必一次性生成所有的值。

在给定的代码中,表达式(sum(row) for row in M)创建了一个生成器G,它会对矩阵M中的每一行计算表达式sum(row)的值。然而,生成器G在这一步只是被设置,还没有执行任何操作。

当我们调用next(G)时,实际上是在运行生成器G对矩阵M进行迭代。因此,第一次调用next(G)将返回第一行的和,第二次调用将返回第二行的和,依此类推。

以下是代码示例:

M = [[1,2,3],
     [4,5,6],
     [7,8,9]]
G = (sum(row) for row in M) # 创建一个行和的生成器
print(next(G)) # 运行迭代协议,返回第一行的和
print(next(G)) # 返回第二行的和
print(next(G)) # 返回第三行的和

此外,需要注意的是,next()函数直到Python 2.7才被添加为内置函数。然而,即使在较早的版本中也存在该函数,因为在Python 2.6.1上运行上述代码是有效的。

参考链接:

- 生成器的官方文档:[Documentation on generators](http://docs.python.org/tutorial/classes.html#generators)

- yield表达式的官方文档(包含关于生成器的一些信息):[Documentation on yield expressions](http://docs.python.org/reference/expressions.html#yield-expressions)

0