mirror of
https://github.com/python/cpython.git
synced 2025-09-10 18:58:35 +00:00
Issue #16225: Merge from 3.3: Add additional note to tutorial about looping.
This commit is contained in:
commit
c7633e684b
2 changed files with 24 additions and 11 deletions
|
@ -58,24 +58,24 @@ they appear in the sequence. For example (no pun intended):
|
||||||
::
|
::
|
||||||
|
|
||||||
>>> # Measure some strings:
|
>>> # Measure some strings:
|
||||||
... a = ['cat', 'window', 'defenestrate']
|
... words = ['cat', 'window', 'defenestrate']
|
||||||
>>> for x in a:
|
>>> for w in words:
|
||||||
... print(x, len(x))
|
... print(w, len(w))
|
||||||
...
|
...
|
||||||
cat 3
|
cat 3
|
||||||
window 6
|
window 6
|
||||||
defenestrate 12
|
defenestrate 12
|
||||||
|
|
||||||
It is not safe to modify the sequence being iterated over in the loop (this can
|
If you need to modify the sequence you are iterating over while inside the loop
|
||||||
only happen for mutable sequence types, such as lists). If you need to modify
|
(for example to duplicate selected items), it is recommended that you first
|
||||||
the list you are iterating over (for example, to duplicate selected items) you
|
make a copy. Iterating over a sequence does not implicitly make a copy. The
|
||||||
must iterate over a copy. The slice notation makes this particularly
|
slice notation makes this especially convenient::
|
||||||
convenient::
|
|
||||||
|
|
||||||
>>> for x in a[:]: # make a slice copy of the entire list
|
>>> for w in words[:]: # Loop over a slice copy of the entire list.
|
||||||
... if len(x) > 6: a.insert(0, x)
|
... if len(w) > 6:
|
||||||
|
... words.insert(0, w)
|
||||||
...
|
...
|
||||||
>>> a
|
>>> words
|
||||||
['defenestrate', 'cat', 'window', 'defenestrate']
|
['defenestrate', 'cat', 'window', 'defenestrate']
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -589,6 +589,19 @@ returns a new sorted list while leaving the source unaltered. ::
|
||||||
orange
|
orange
|
||||||
pear
|
pear
|
||||||
|
|
||||||
|
To change a sequence you are iterating over while inside the loop (for
|
||||||
|
example to duplicate certain items), it is recommended that you first make
|
||||||
|
a copy. Looping over a sequence does not implicitly make a copy. The slice
|
||||||
|
notation makes this especially convenient::
|
||||||
|
|
||||||
|
>>> words = ['cat', 'window', 'defenestrate']
|
||||||
|
>>> for w in words[:]: # Loop over a slice copy of the entire list.
|
||||||
|
... if len(w) > 6:
|
||||||
|
... words.insert(0, w)
|
||||||
|
...
|
||||||
|
>>> words
|
||||||
|
['defenestrate', 'cat', 'window', 'defenestrate']
|
||||||
|
|
||||||
|
|
||||||
.. _tut-conditions:
|
.. _tut-conditions:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue