The main difference is that the first is an expression of the generator, and the second is the understanding of the list. The former only give elements as needed, while the latter always gives the entire list when understanding is performed.
See Generator Expressions and Understanding Lists for more information.
In Python, there is no concept of a "tuple", which is what you expect from the first syntax.
If you want to turn tour1 into a tuple of tuples, you can use the following:
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)))