python list by value not by reference

d.putto picture d.putto · Jan 5, 2012 · Viewed 194.1k times · Source

Let's take an example

a=['help', 'copyright', 'credits', 'license']
b=a
b.append('XYZ')
b
['help', 'copyright', 'credits', 'license', 'XYZ']
a
['help', 'copyright', 'credits', 'license', 'XYZ']

I wanted to append value in list 'b' but the value of list 'a' have also changed.
I think I have little idea why its like this (python passes lists by reference).
My question is "how can I pass it by value so that appending 'b' does't change values in 'a' ?"

Answer

phihag picture phihag · Jan 5, 2012

As answered in the official Python FAQ:

b = a[:]