Ezio Melotti <ezio.melo...@gmail.com> added the comment:

In the first patch I included this example:
+   >>> swapped = []
+   >>> for i in [0, 1, 2]:
+   ...     swapped.append([row[i] for row in mat])
+   ...
+   >>> print swapped
+   [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Because I applied the following transformation without looking at what expr was 
(another listcomp in this case):
    res = [expr for elem in seq]
==>
   res = []
   for elem in seq:
       res.append(expr)

If the reader does the same he/she wouldn't have any problem figuring out what 
is the order of the `for`s, but the second version of the patch only includes a 
"fully expanded" example:
+   >>> transposed = []
+   >>> for i in range(4):
+   ...     # the following 3 lines implement the nested listcomp
+   ...     transposed_row = []
+   ...     for row in matrix:
+   ...         transposed_row.append(row[i])
+   ...     transposed.append(transposed_row)
+   ...
+   >>> transposed

Here it's easier to confuse the two `for` (not because they are similar, but 
because there are two of them, whereas in the previous example there's only 
one).

I added a comment to clarify that the inner loop is the listcomp, but maybe it 
would be better to show the first example too, followed by the "fully expanded" 
one, i.e.:

+   [[row[i] for row in mat] for i in range(4)]

+   >>> transposed = []
+   >>> for i in range(4):
+   ...     transposed.append([row[i] for row in mat])
+   ...
+   >>> transposed

+   >>> transposed = []
+   >>> for i in range(4):
+   ...     # the following 3 lines implement the nested listcomp
+   ...     transposed_row = []
+   ...     for row in matrix:
+   ...         transposed_row.append(row[i])
+   ...     transposed.append(transposed_row)
+   ...
+   >>> transposed

The step in the middle shows that in order to get to the "fully expanded" form, 
it's enough to apply the "usual" listcomp->for+append transformation twice, 
without worrying about left-to-right vs right-to-left.  Do you think it's worth 
adding this?

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13549>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to