Assigning a list to a new variable doesn't create a copy. Both variables point to the same list. Given a = [1, 2, 3] then b = a, modifying b[0] = 99 also changes a to [99, 2, 3].
To create an independent copy, use slicing: b = a[:]. Or use the copy() method: b = a.copy(). Or the list() constructor: b = list(a). These create "shallow" copies.
Fine for simple lists but problematic for nested lists where inner lists are still shared. For nested structures, use import copy then b = copy.deepcopy(a) to recursively copy all levels. Understanding copy semantics prevents confusing bugs.