Main.ListMutability History
Hide minor edits - Show changes to markup
February 16, 2010, at 08:44 AM MST
by -
Added lines 1-55:
(:source lang=python:)
"""Exploring lists as mutable objects http://openbookproject.net/thinkcs/python/english2e/ch09.html#lists-are-mutable """
a = "banana" b = "banana"
- do a and b point to the same object in memory?
id(a) id(b)
- Python only created one string, and both a and b refer to it.
- lists behave differently. When we create two lists, we get two objects:
a = [1, 2, 3] b = [1, 2, 3]
id(a) id(b)
- Since variables refer to objects, if we assign one variable to another,
- both variables refer to the same object:
a = [1, 2, 3] b = a id(a) == id(b)
- if we change b, that also changes a
b[0] = 5 print a
- If we want to modify a list and also keep a copy of the original, we need
- to be able to make a copy of the list itself, not just the reference.
- This process is sometimes called cloning, to avoid the ambiguity of the word copy.
- The easiest way to clone a list is to use the slice operator:
a = [1, 2, 3] b = a[:] print b a == b id(a) == id(b)
- the equality operator for lists determines if all elements of the two lists are the same
- Now we are free to make changes to b without worrying about a:
b[0] = 5 print a
(:sourceend:)
