New submission from Matt Long <m...@crocodoc.com>:

The description of nesting list comprehensions in section 5.1.5 of the main 
Python tutorial 
(http://docs.python.org/tutorial/datastructures.html#nested-list-comprehensions)
 is misleading at best and arguably incorrect. Where it says "To avoid 
apprehension when nesting list comprehensions, read from right to left." This 
is incorrect and conflicts directly with the comment at the bottom of PEP 202 
(http://www.python.org/dev/peps/pep-0202/), which says the last index varies 
fastest.

Take the following example:

matrix = [[1,2],[3,4],[5,6]]
my_list = []
for row in matrix:
  for number in row
    my_list.append(number)

The current documentation would suggest I do the following to achieve the same 
result with list comprehensions since the for statements should be read from 
right to left:

matrix = [[1,2],[3,4],[5,6]]
my_list = [number for number in row for row in matrix]

Running this code will result in an error. The correct form is:

matrix = [[1,2],[3,4],[5,6]]
[number for row in matrix for number in row]

Clearly the nesting order only matters when the inner loop depends on the outer 
loop as in my example above. There is no such dependency in the documentation's 
example, which is why it is does not result in an Error.

----------
assignee: docs@python
components: Documentation
messages: 148994
nosy: docs@python, mattlong
priority: normal
severity: normal
status: open
title: Incorrect nested list comprehension documentation
type: behavior
versions: Python 2.6, Python 2.7

_______________________________________
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