Fix Python – python list by value not by reference [duplicate]

Question

Asked By – d.putto

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’ ?”

Now we will see solution for issue: python list by value not by reference [duplicate]


Answer

You cannot pass anything by value in Python. If you want to make a copy of a, you can do so explicitly, as described in the official Python FAQ:

b = a[:]

This question is answered By – phihag

This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0