У меня есть эта функция, которая должна транспонировать полученный список. Это работает, но по какой-то причине изменяет и исходную матрицу: почему?
Matrix = [["1"], ["1","2"], ["1","2","3","4"], []]
def test():
global Matrix # same happens when global or not
tMatrix = Matrix
print(tMatrix) # 1
tMatrix = transposer(Matrix)
print(tMatrix) # 2
print(Matrix) # 3
Выход:
[['1'], ['1', '2'], ['1', '2', '3', '4'], []] # 1
[['1', '1', '1'], ['2', '2'], ['3'], ['4']] # 2
[[], [], [], []] # 3
Я думаю, это не должно иметь значения, но вот функция транспозитора:
def transposer(m):
tm = []
maxi = 0
for i in range(0, len(m)):
maxi = max(maxi, len(m[i]))
for z in range(0, maxi):
row = []
for j in range(0, len(m)):
try:
row.append(m[j].pop(0))
except:
pass
tm.append(row)
return(tm)
Как возможно, что переменная Matrix также затронута, даже если функция не вызывается для этой переменной?