gpt4 book ai didi

python - 在Python中生成时 "()"和 "[]"有什么区别?

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

有一个列表:nodes = [20, 21, 22, 23, 24, 25]。

我使用了两种方法来生成新的二维对象:

tour1 = (((a,b) for a in nodes )for b in nodes)
tour2 = [[(a,b) for a in nodes ]for b in nodes]

tour1 的类型是一个生成器,而 tour2 是一个列表:

In [34]: type(tour1)
Out[34]: <type 'generator'>

In [35]: type(tour2)
Out[35]: <type 'list'>

我想知道为什么 tour1 不是元组?谢谢。

最佳答案

根本区别在于第一个是生成器表达式,第二个是列表理解。前者仅在需要时生成元素,而后者总是在运行理解时生成整个列表。

有关详细信息,请参阅 Generator Expressions vs. List Comprehension

Python 中没有“元组理解”这样的东西,这似乎是您对第一种语法的期望。

如果你想把 tour1 变成元组的元组,你可以使用下面的:

In [89]: tour1 = tuple(tuple((a,b) for a in nodes )for b in nodes)

In [90]: tour1
Out[90]:
(((20, 20), (21, 20), (22, 20), (23, 20), (24, 20), (25, 20)),
((20, 21), (21, 21), (22, 21), (23, 21), (24, 21), (25, 21)),
((20, 22), (21, 22), (22, 22), (23, 22), (24, 22), (25, 22)),
((20, 23), (21, 23), (22, 23), (23, 23), (24, 23), (25, 23)),
((20, 24), (21, 24), (22, 24), (23, 24), (24, 24), (25, 24)),
((20, 25), (21, 25), (22, 25), (23, 25), (24, 25), (25, 25)))

关于python - 在Python中生成时 "()"和 "[]"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13491601/

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