Home > Software engineering >  Why does the original list change when I change the copied list (PYTHON)
Why does the original list change when I change the copied list (PYTHON)

Time:12-12

So I have this simple 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)

If 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']]. Please someone help me. Thanks and have a good weekend

CodePudding user response:

you should use copy.deepcopy.

If your list is a list of integers or floats, copy would suffice but since you have 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?

  • Related