元组理解生成意外输出

Tuple comprehension is generating unexpected output

x=(y for y in range(100) if y%2==0 and y%5==0)
print(x)

这给出了类似 -

的输出
<generator object <genexpr> at 0x00000222B1C3CC80>

您可以执行以下操作

x=tuple(y for y in range(100) if y%2==0 and y%5==0)

您可以使用tuple()函数进行转换。

x = (y for y in range(100) if y % 2 == 0 and y % 5 == 0)
print(tuple(x))
# (0, 10, 20, 30, 40, 50, 60, 70, 80, 90)

元组理解不是一回事。检查 this SO post 以了解原因。

改为这样做:

x = tuple(y for y in range(100) if y%2==0 and y%5==0)

这使用 tuple() 构造函数从生成器对象创建元组。您可以使用此构造函数从迭代器或可迭代对象生成的元素创建元组。所以,这段代码是有效的,因为生成器对象可以用作迭代器。