oursolutionarchitectoursolutionarchitect
  • Python Questions and Answers
  • Python - Programming Examples
  • Python - Quick Guide
  • Python - Useful Resources
  • Python - Discussion
    • Selected Reading
    • Q&A

    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