Python - Copy Lists



In Python, a variable is just a label or reference to the object in the memory. Hence, the assignment "lst1 = lst" refers to the same list object in the memory. Take a look at the following example −

lst = [10, 20]
print ("lst:", lst, "id(lst):",id(lst))
lst1 = lst
print ("lst1:", lst1, "id(lst1):",id(lst1))

It will produce the following output

lst: [10, 20] id(lst): 1677677188288
lst1: [10, 20] id(lst1): 1677677188288

As a result, if we update "lst", it will automatically reflect in "lst1". Change lst[0] to 100

lst[0]=100
print ("lst:", lst, "id(lst):",id(lst))
print ("lst1:", lst1, "id(lst1):",id(lst1))

It will produce the following output

lst: [100, 20] id(lst): 1677677188288
lst1: [100, 20] id(lst1): 1677677188288

Hence, we can say that "lst1" is not the physical copy of "lst".

Copy a Python List

Python's list class has a copy() method to create a new physical copy of a list object.

Syntax

lst1 = lst.copy()

The new list object will have a different id() value.

Example of Copy List in Python

Example 1

The following example demonstrates this −

lst = [10, 20]
lst1 = lst.copy()
print ("lst:", lst, "id(lst):",id(lst))
print ("lst1:", lst1, "id(lst1):",id(lst1))

It will produce the following output

lst: [10, 20] id(lst): 1677678705472
lst1: [10, 20] id(lst1): 1677678706304

Even if the two lists have same data, they have different id() value, hence they are two different objects and "lst1" is a copy of "lst".

If we try to modify "lst", it will not reflect in "lst1". See the following example −

Example 2

lst[0]=100
print ("lst:", lst, "id(lst):",id(lst))
print ("lst1:", lst1, "id(lst1):",id(lst1))

It will produce the following output

lst: [100, 20] id(lst): 1677678705472
lst1: [10, 20] id(lst1): 1677678706304
Advertisements