If you write a
for loop in Python to go through each element of a list, you assign an extra (temporary) name to each member of the list while within the loop.
So than any changes made to the named variable will also be changes to the object in the original list. However, that's overshaddowed / overtaken by the fact that changes to
immutable objects result in the creation of new objects which the temporary name, but not the original name, point to.
So that changes made to IMMUTABLE objects will NOT be seen as changes to objects in the original list.
Int and float primitives, and tuples, are IMMUTABLE.
Lists and dicts are MUTABLE, as are most other objects.
Here's an example showing how the behaviour of lists and tuples differs in this respect - even though both are zero based ordered collections of objects:
# for loop changes mutable objects in list
stuff = [3,4,[5,6],7,8]
for item in stuff:
item *= 2
print stuff
# for loop leaves immutable objects in tuple
stuff = [3,4,(5,6),7,8]
for item in stuff:
item *= 2
print stuff
And here is how that runs:
munchkin:ps grahamellis$ python over
[3, 4, [5, 6, 5, 6], 7, 8]
[3, 4, (5, 6), 7, 8]
munchkin:ps grahamellis$ """
(written 2011-09-14)
Associated topics are indexed under
Y103 - Python - Conditionals and Loops [3895] Flowchart to program - learning to program with Well House - (2012-10-14)
[3762] Learning to program - the if statement. Python. - (2012-06-12)
[3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
[3558] Python or Lua - which should I use / learn? - (2011-12-21)
[3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3083] Python - fresh examples from recent courses - (2010-12-11)
[2899] Groupsave tickets - 3 or 4 train tickets for the price of 2 - (2010-08-02)
[2778] Learning to program in Python 2 ... and / or in Python 3 - (2010-05-24)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[1661] Equality, sameness and identity - Python - (2008-05-31)
[1477] Decisions - small ones, or big ones? - (2007-12-18)
[1201] No switch in Python - (2007-05-23)
[909] Python is like a narrowboat - (2006-10-30)
[835] Python - when to use the in operator - (2006-08-16)
[788] New - Conditional expressions in Python 2.5 - (2006-07-01)
[668] Python - block insets help with documentation - (2006-04-04)
[657] The ternary operator in Python - (2006-03-25)
[353] Wimbledon Neck - (2005-06-20)
[299] What - no switch or case statement? - (2005-05-03)
Y111 - Python - More on Collections and Sequences [3797] zip in Python - (2012-07-05)
[3348] List slices in Python - 2 and 3 values forms, with an uplifting example - (2011-07-06)
[3150] Python dictionaries - mutable and immutable keys and values - (2011-01-29)
[2996] Copying - duplicating data, or just adding a name? Perl and Python compared - (2010-10-12)
[2920] Sorting - naturally, or into a different order - (2010-08-14)
[2894] Sorting people by their names - (2010-07-29)
[2718] Python - access to variables in the outer scope - (2010-04-12)
[1873] List Comprehensions in Python - (2008-11-06)
[1869] Anonymous functions (lambdas) and map in Python - (2008-11-04)
[1310] Callbacks - a more complex code sandwich - (2007-08-19)
[1304] Last elements in a Perl or Python list - (2007-08-16)
[899] Python - extend v append on a list - (2006-10-20)
[633] Copying a reference, or cloning - (2006-03-05)
[386] What is a callback? - (2005-07-22)
[61] Python is a fabulous language - (2004-09-24)
57fc
Some other Articles
Getting more log information from the Apache http web serverA demonstration of how many Python facilities work togetherPressing ^C in a Python program. Also Progress Bar.Research is exciting. But should routine be automated?Python for loops - applying a temporary second name to the same objectMelksham to become a part of Trowbridge?Light bulbsMoving from scripting to Object Orientation in PythonSorta sorting a hash, and what if an exception is NOT thrown - RubySundays - and over eating