【发布时间】:2021-04-12 20:59:08
【问题描述】:
我正在研究 Python 中的列表理解,我很困惑为什么这两个代码会产生不同的输出。 代码:
print([(letter,num) for letter in 'abc' for num in range(2)])
print([((letter,num) for letter in 'abc') for num in range(2)])
输出:
[('a', 0), ('a', 1), ('a', 2), ('a', 3), ('b', 0), ('b', 1), ('b', 2), ('b', 3), ('c', 0), ('c', 1), ('c', 2), ('c', 3), ('d', 0), ('d', 1), ('d', 2), ('d', 3)]
[<generator object <listcomp>.<genexpr> at 0x000002919E020F20>, <generator object <listcomp>.<genexpr> at 0x000002919E148C10>, <generator object <listcomp>.<genexpr> at 0x000002919E1489E0>, <generator object <listcomp>.<genexpr> at 0x000002919E148C80>]
【问题讨论】:
-
我认为从额外括号的位置可以明显看出,但第一个是嵌套列表推导,而第二个是列表推导中的生成器表达式。
-
您是否期望括号执行某种类型的操作顺序?
标签: python python-3.x list generator list-comprehension