Python:set()中的理解是什么意思?

2024-04-18 22:30:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我看到了这样的东西:

set(x for x in [1, 2, 3])

我知道x for x in [1, 2, 3]是一种理解,但我找不到有效的语法,因为x for x in [1, 2, 3]本身是无效的。你知道吗


Tags: infor语法set
3条回答

这是一个生成器表达式。它们通常由paren包围,但如果表达式是函数调用的唯一参数,则可以忽略paren:

>>> generator = (x for x in [1, 2, 3])
>>> generator.next()
1
>>> set(generator)
set([2, 3])

生成器对象可以迭代,它们逐个生成值。与在这里使用列表理解相比,优点是不需要创建中间列表对象(如果有一百万个元素而不是三个元素,这就更重要了)。你知道吗

文档:https://docs.python.org/2/reference/expressions.html#generator-expressions

python3 reference

call ::=  primary "(" [argument_list [","] | comprehension] ")"
comprehension ::=  expression comp_for

支票:

set(x for x in [1, 2, 3])

setprimaryxexpressionfor x in [1, 2, 3]comp_for

它是在理解的基础上创建一个集合。示例:

a = set(x for x in [1, 2, 3])
print(a)

结果将是一组:

{1, 2, 3}

在上面的例子中,逻辑可以简化为:

a = set([1, 2, 3])

你根本不需要理解

相关问题 更多 >