Python list sorting and indexing
Question: I am having issue understanding and solving the following issue with lists,
sorting and indexing. Here is the code example:

    
    
    import random as rdm
    a=[]
    for i in range(3):
        a.append([i,rdm.randint(-5,5)])
    print a
    b = sorted(a,key=lambda a:a[1])
    print b
    c = []
    for j in range(len(b)):
        c.append(b[j])
    print c
    c[0][1] = 0
    print a
    print b
    print c
    

Notice how changing one value of "C" changed "b" and "a". How can I prevent it
from happening? In other words. I do not want the values of "a" changed
doesn't matter what happens to "b" or "c"


Answer: Congrajulations, welcome to the world of working with references.

In your code, when you write:

    
    
    c.append(b[j])
    

You are adding into `c` a reference to the object `b[j]`.

If you want `b` and `c` to be independant of `a`, you must do a **deep copy**
of the objects.

    
    
    import copy
    b = sorted (copy.deepcopy(a), lambda a : a[1])
    

