[issue41591] Comprehensions documentation

2020-08-19 Thread Walid Taha


New submission from Walid Taha :

The documentation for list comprehensions contains the following phrase:

"As we saw in the previous section, the nested listcomp is evaluated in the 
context of the for that follows it, so this example is equivalent to:"

This should be corrected, as it currently contradicts what was said previously, 
which is that list comprehensions and the conditional they contain are scoped 
in the same order as they appear (rather than the reverse).

This issue can be found on this page: 
https://docs.python.org/3/tutorial/datastructures.html

It also seems to appear in the most recent version:
https://docs.python.org/3.10/tutorial/datastructures.html

To confirm that the first (and not the second statement) is correct, you may 
consider the following code:

l=[]
for x in range(0,3):
  for y in range (0,x+1):
l.append((x,y))
print(l)

l=[(x,y) for x in range (0,3) for y in range (0,x+1)]
print(l)

Which run on 3.7.5 produces the following output

[(0, 0), (1, 0), (1, 1), (2, 0), (2, 1), (2, 2)]
[(0, 0), (1, 0), (1, 1), (2, 0), (2, 1), (2, 2)]

--
assignee: docs@python
components: Documentation
messages: 375665
nosy: docs@python, wtaha
priority: normal
severity: normal
status: open
title: Comprehensions documentation
versions: Python 3.8

___
Python tracker 
<https://bugs.python.org/issue41591>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue41591] Comprehensions documentation

2020-08-20 Thread Walid Taha


Walid Taha  added the comment:

Thank you, and good point, Vedran. That takes care of the example that I gave. 
What remains is the source of confusion, namely, the reference to the "previous 
section". With a quick search I was not able to find what this was referring to 
(other than the one that you correctly pointed out is not nested). Can you 
point me to that reference?

--

___
Python tracker 
<https://bugs.python.org/issue41591>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue41591] Comprehensions documentation

2020-08-20 Thread Walid Taha


Walid Taha  added the comment:

That makes perfect sense now, and I see what threw me off. Basically, there 
were not enough cues for me to see that there was an extra pair of square 
brackets in the example that had nested listcomps, and as a result, I assumed 
that a nested listcomp simply meant one with multiple for clauses in it (which 
you clarified is not considered a nested listcomp).

If I may make a suggestion, the phrase "the nested listcomp is evaluated" would 
not have confused me if it simply said "the main part of the outer listcomp is 
evaluated". This can help in two ways. First, it avoids the possible confusion 
that the discussion in the previous section was about nested listcomp (which 
you rightly point out it is not). Second, adding the word "outer" gives an 
additional cue that we actually have two nested listcomps here.

Thank you very much for your quick response and help with this issue!

--

___
Python tracker 
<https://bugs.python.org/issue41591>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com