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 as below, or enter http://melksh.am/nnnn for individual articles
Y111 - Python - More on Collections and Sequences [61] Python is a fabulous language - (2004-09-24)
[386] What is a callback? - (2005-07-22)
[633] Copying a reference, or cloning - (2006-03-05)
[899] Python - extend v append on a list - (2006-10-20)
[1304] Last elements in a Perl or Python list - (2007-08-16)
[1310] Callbacks - a more complex code sandwich - (2007-08-19)
[1869] Anonymous functions (lambdas) and map in Python - (2008-11-04)
[1873] List Comprehensions in Python - (2008-11-06)
[2718] Python - access to variables in the outer scope - (2010-04-12)
[2894] Sorting people by their names - (2010-07-29)
[2920] Sorting - naturally, or into a different order - (2010-08-14)
[2996] Copying - duplicating data, or just adding a name? Perl and Python compared - (2010-10-12)
[3150] Python dictionaries - mutable and immutable keys and values - (2011-01-29)
[3348] List slices in Python - 2 and 3 values forms, with an uplifting example - (2011-07-06)
[3797] zip in Python - (2012-07-05)
[4398] Accessing variables across subroutine boundaries - Perl, Python, Java and Tcl - (2015-01-18)
[4442] Mutable v Immuatble objects in Python, and the implication - (2015-02-24)
Y103 - Python - Conditionals and Loops [299] What - no switch or case statement? - (2005-05-03)
[353] Wimbledon Neck - (2005-06-20)
[657] The ternary operator in Python - (2006-03-25)
[668] Python - block insets help with documentation - (2006-04-04)
[788] New - Conditional expressions in Python 2.5 - (2006-07-01)
[835] Python - when to use the in operator - (2006-08-16)
[909] Python is like a narrowboat - (2006-10-30)
[1201] No switch in Python - (2007-05-23)
[1477] Decisions - small ones, or big ones? - (2007-12-18)
[1661] Equality, sameness and identity - Python - (2008-05-31)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[2778] Learning to program in Python 2 ... and / or in Python 3 - (2010-05-24)
[2899] Groupsave tickets - 3 or 4 train tickets for the price of 2 - (2010-08-02)
[3083] Python - fresh examples from recent courses - (2010-12-11)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[3558] Python or Lua - which should I use / learn? - (2011-12-21)
[3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
[3762] Learning to program - the if statement. Python. - (2012-06-12)
[3895] Flowchart to program - learning to program with Well House - (2012-10-14)
[4092] Identity in Python - (2013-05-17)
[4210] If elif elif elif - multiway selection in Python - (2013-11-16)
[4322] Learning to Program - the conditional statement (if) - (2014-11-21)
[4323] Learning to program - Loop statements such as while - (2014-11-22)
[4402] Finding sum, minimum, maximum and average in Python (and Ruby) - (2015-01-19)
[4541] Setting up and tearing down with the Python with keyword - (2015-10-16)
[4545] Method, Class, Module, Package - how to they relate in Python? - (2015-10-17)
[4713] Equality (in Python) - (2016-10-30)
[4723] Conditional operators in Python - (2016-11-05)
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