Простой код Python о двойном цикле

Я тестировал следующий код Python на Spyder IDE. Думая, что это выведет 2d массивq по мере увеличения числа от 0,31 доq[0][0] вq[3][7], Но на самом деле он возвращает q как:

[[24, 25, 26, 27, 28, 29, 30, 31], [24, 25, 26, 27, 28, 29, 30, 31], [24, 25, 26, 27, 28, 29, 30, 31], [24, 25, 26, 27, 28, 29, 30, 31]]. 

Код:

q=[[0]*8]*4 
for i in range(4): 
    for j in range(8): 
        q[i][j] = 8*i+j 
print q

Любая идея о том, чтоздесь происходит? Я отлаживал шаг за шагом. Он показывает, что обновления каждой строки будут синхронизироваться со всеми другими строками, что сильно отличается от моего опыта работы с другими языками программирования.

Ответы на вопрос(3)

Ваш ответ на вопрос