Tomasnborges
Tomasnborges

Reputation: 33

Why does the original list change when I change the copied list

I have this code:

list = [[1,2],[4,5]]
list1 = list.copy() 
for i in range(len(list)):
    for j in range(len(list[i])):
        print(i, j, ":", list[i][j], "and", j, i, ":", list1[j][i])
        nr = input('Line {0}, Column{1}: '.format(i+1, j+1))
        list[i][j] = nr
        list1[j][i] = nr
        print(list, list1)
print(list1, list)

I want the final result of the variable list to be the following matrix: [[1,2],[3,4]], so the variable list1 should be the transposed matrix: [[1,3],[2,4]]. Somehow the result is this: [['1', '3'], ['3', '4']] [['1', '3'], ['3', '4']].

Upvotes: 0

Views: 1356

Answers (1)

MoneyBall
MoneyBall

Reputation: 2563

you should use copy.deepcopy.

If your list were a list of integers or floats, .copy() would suffice, but since you have a list of lists, you need to recursively copy the elements inside the lists.

You can find more detailed answer here: What is the difference between shallow copy, deepcopy and normal assignment operation?

Upvotes: 1

Related Questions