生成器表达式和元组表达式的区别

问题描述 投票:0回答:1

我有2条声明

# Generator expression
squares_gen = (x**2 for x in range(10))
# Tuple comprehension
squares_tuple = (x**2 for x in range(10))

python如何理解第一个语句是生成器而第二个语句是元组?

# Generator expression
squares_gen = (x**2 for x in range(10))

# Tuple comprehension
squares_tuple = (x**2 for x in range(10))

for square in squares_gen:
    print(square)

print(squares_tuple)

我想了解Python如何以不同的方式处理它们

tuples generator
1个回答
0
投票

不存在元组理解这样的东西。

squares_tuple
仍然是一个发电机。

>>> squares_tuple = (x**2 for x in range(10))
>>> type(squares_tuple)
<class 'generator'>

因为生成器是一个可迭代的值,所以您可以将其传递给

tuple
创建一个元组。

>>> tuple(squares_tuple)
(0, 1, 4, 9, 16, 25, 36, 49, 64, 81)
© www.soinside.com 2019 - 2024. All rights reserved.