gpt4 book ai didi

python - 如何识别生成器与列表理解

转载 作者:太空狗 更新时间:2023-10-29 22:04:55 25 4
gpt4 key购买 nike

我有这个:

>>> sum( i*i for i in xrange(5))

我的问题是,在这种情况下,我是将列表推导式还是生成器对象传递给 sum ?我怎么说呢?对此有一般规则吗?

还请记住,sum 本身需要一对括号将其参数括起来。我认为上面的括号用于求和而不是用于创建生成器对象。你不同意吗?

最佳答案

您正在传递 generator expression .

A list comprehension is specified with square brackets ([...])。列表理解首先构建一个列表对象,因此它使用与列表文字语法密切相关的语法:

list_literal = [1, 2, 3]
list_comprehension = [i for i in range(4) if i > 0]

另一方面,生成器表达式创建一个迭代器对象。只有在 遍历该对象时,才会执行包含的循环并生成项目。生成器表达式不会保留那些项目;没有正在构建的列表对象。

生成器表达式总是使用 (...) 圆括号,但是当用作调用的唯一参数时,括号可以省略;以下两个表达式是等价的:

sum((i*i for i in xrange(5)))  # with parenthesis
sum(i*i for i in xrange(5)) # without parenthesis around the generator

引用自生成器表达式文档:

The parentheses can be omitted on calls with only one argument. See section Calls for the detail.

关于python - 如何识别生成器与列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com