Home > Backend Development > Python Tutorial > How to Properly Deep Copy a List in Python?

How to Properly Deep Copy a List in Python?

Patricia Arquette
Release: 2025-01-04 02:55:38
Original
694 people have browsed it

How to Properly Deep Copy a List in Python?

How to Deep Copy a List?

When attempting to create a deep copy of a list, it's crucial to avoid using the list() constructor. While list() may appear to generate a distinct list, it only performs a shallow copy, preserving references to the original list's elements. Consequently, any modifications made to the new list will also affect the original.

Solution: Deep Copy Using copy.deepcopy()

For true deep copying, the copy.deepcopy() function must be employed. This function recursively clones all elements within the list, ensuring that the new list is independent of the original.

Example:

import copy

# Original list
E0 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Shallow copy
E0_copy1 = list(E0)

# Deep copy
E0_copy2 = copy.deepcopy(E0)

# Modify shallow copy
E0_copy1[0][0] = 0

# Observe that changes to the shallow copy also affect the original
print(E0)  # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]

# Modify deep copy
E0_copy2[1][1] = 0

# Note that changes to the deep copy do not affect the original
print(E0)  # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]
Copy after login

Explanation:

list() initializes a new list by referencing the original elements. Therefore, any alterations made to the copy propagates to the original list.

copy.deepcopy(), on the other hand, creates copies of all nested elements within the list, resulting in a fully independent copy. Modifications to the deep copy do not impact the original list.

The above is the detailed content of How to Properly Deep Copy a List in Python?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template