R. David Murray added the comment:

I don't think that helps.  The issue here is that *sequences* are iterated over 
by incrementing an integer index.  If you change the size of the list, you are 
potentially changing which value any given index points to.  Presumably the 
tutorial writer thought this was intuitive, and indeed after years of Python 
programming I find it so.  I can see how a beginner might not, though :)

What if we replaced:

  If you need to modify the sequence you are iterating over while inside the 
loop (for example to duplicate selected items), it is recommended that you 
first make a copy. Iterating over a sequence does not implicitly make a copy. 
The slice notation makes this especially convenient:

With:

  Sequence iteration is preformed by incrementing an implicit integer index 
until there are no more items in the sequence.  The sequence is *not* copied 
before iteration, so if you modify the sequence during iteration the value that 
is affected by the next iteration of the loop may not be the one you are 
expecting.  You can avoid this problem by iterating over a copy of the 
sequence, and the slice notation makes this especially convenient:

However, this section has a deeper problem.  It is introducing the 'for' 
statement, but explains what the for statement does in terms of sequences, when 
in fact the for statement now operates on any iterable, not just sequences.  
(Many Python programmers probably do not remember the time before the iteration 
protocol was added to the language :)

Fixing that problem not only requires rewriting the section, but also figuring 
out the best place to introduce the concept of the iteration protocol (which 
*might* be in this section, but it's been so long since I've looked over the 
tutorial that I can't say).

----------
nosy: +r.david.murray

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

Reply via email to