"Carlos Ribeiro" <cribeiro at mail.inet.com.br> wrote in message news:mailman.987166938.10180.python-list at python.org... > I also lost. I did a small change on your example to better illuminate what > is happening: > > >>> [[i,j] for i in range(3), for j in 'abc'] > [[[0, 1, 2], 'a'], [[0, 1, 2], 'b'], [[0, 1, 2], 'c']] > >>> [[i,j] for i in range(3), for j in 'abc',] > [[[0, 1, 2], 'abc']] > >>> [[i,j] for i in range(3) for j in 'abc'] > [[0, 'a'], [0, 'b'], [0, 'c'], [1, 'a'], [1, 'b'], [1, 'c'], [2, 'a'], [2, > 'b'], [2, 'c']] > > And also, a fourth case for completeness: > > >>> [[i,j] for i in range(3) for j in 'abc',] > [[0, 'abc'], [1, 'abc'], [2, 'abc']] > > So it seems that the idiom > > for i in range(x), > > with the comma right after the for clause, "reduces" the iterated list to > the original list again, and then apply it to all further iterations of the > list comprehension. Now, I don't know if this is by design or by accident; > all I know is that this is something that may be exploited as a useful > idiom. For instance, neither map or zip have this behavior, of applying the > same list to all members of the other. Hint: '[1,2,3],' is a tuple of 1. -- Rainer Deyke (root at rainerdeyke.com) Shareware computer games - http://rainerdeyke.com "In ihren Reihen zu stehen heisst unter Feinden zu kaempfen" - Abigor
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4