根本区别在于第一个是生成器表达式,第二个是列表推导式。前者只在需要时产生元素,而后者总是在运行推导时产生整个列表。
有关详细信息,请参阅生成器表达式与列表理解
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)))