Я хочу сделать «анимацию» элемента матрицы, идущего от нижней строки к верхнему ряду матрицы.
У меня есть следующий код, но что-то не требуется выполняется с функцией добавления:
import time
#size of the matrix
PixelCarac=4
#List that cointain all the matrixs
ListMatrix=[]
#matrix filled with 0
tempo =[[0 for x in range(PixelCarac)] for y in range(PixelCarac)]
#last line have a difference
tempo[3][0]=1
print("First step")
print(tempo)
#making the line going up.
for x in range(0,PixelCarac-1,1):
#append in the list
ListMatrix.append(tempo)
#display
print("length of the list is " + str(len(ListMatrix)))
for elem in ListMatrix:
print(elem)
#Making the line going up by recopie from 1 line to the upper one
for i in range(0,len(tempo)-1,1):
tempo[i]=tempo[i+1]
time.sleep(20)
вывод у меня:
Первый шаг
[[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,1]
длина списка 1
[[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,1]
длина списка 2
[[0,0,0,0], [0,0,0,0], [0,0,0, 1 ], [0,0,0,1]
* * Тысяча двадцать-один [[0,0,0,0], [0,0,0,0], [0,0,0,1], [0,0,0,1] * +1022 *
длина списка 2
[[0,0,0,0], [0,0,0, 1 * * тысяча двадцать-семь], [0,0,0, 1 * 1 029 *], [0,0 , 0,1]
[[0,0,0,0], [0,0,0, 1 ], [0,0,0,1], [0,0,0,1]
[[0,0,0,0], [0,0,0,1], [0,0,0,1], [0,0,0,1]
вывод, который я хочу:
Первый шаг
[[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,1]
длина списка 1
[[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,1]
длина списка 2
[[0,0,0,0], [0,0,0,0], [0,0,0,0], [* 0 * тысячу пятьдесят-два , 0,0,1]
[[0,0,0,0], [0,0,0,0], [0,0,0,1], [0,0,0,1]
длина списка 2
[[0,0,0,0], [0,0,0, 0 * * тысяча шестьдесят-одна], [0,0,0, 0 * * 1 063], [0,0 , 0,1] * 1 064 *
[[0,0,0,0], [0,0,0, 0 ], [0,0,0,1], [0,0,0,1]
[[0,0,0,0], [0,0,0,1], [0,0,0,1], [0,0,0,1]
Вопрос:
Почему функция append меняет предыдущие элементы в списке?