How do I clone a list so that it doesn't change unexpectedly after assignment?

There are a few different ways to make a copy of a list in Python:

  1. Using the list() constructor:
original_list = [1, 2, 3]
new_list = list(original_list)
print(new_list)
  1. Using slicing:
original_list = [1, 2, 3]
new_list = original_list[:]
print(new_list)

Watch a course Python - The Practical Guide

  1. Using the copy module:
import copy
original_list = [1, 2, 3]
new_list = copy.copy(original_list)
print(new_list)
  1. Using the deepcopy() method from the copy module:
import copy
original_list = [1, 2, 3]
new_list = copy.deepcopy(original_list)
print(new_list)

The first two methods create a shallow copy of the list, meaning that if the original list contains any mutable objects (like lists), changes to those objects will be reflected in both the original and the copy.

The third and fourth methods create a deep copy of the list, which means that the copy is completely independent of the original, including any mutable objects it contains.

Which method you use will depend on your specific needs. If you just want to create a new list with the same elements as the original, either of the first two methods will work. If you need to create a completely independent copy of the list, including any mutable objects it contains, you should use one of the last two methods.