arr = []
- пустой список, и когда вы добавляете tmp
к нему через:
tmp = [1, 2]
arr.append(tmp)
Вы помещаете tmp
в список arr
, что дает вам arr = [tmp]
, который можно расширить до arr = [[1,2]]
. Но здесь важно то, что вы поддерживаете ссылку на список [1,2]
через переменную temp
. Таким образом, когда вы добавляете temp
, вы добавляете тот же список, что и в arr
.
Для дальнейшего пояснения то, что вы добавляете tmp
к arr
, не означает, что результирующий список [[1,2]]
будет одним непрерывным блоком в памяти. У вас будет список arr
, а первый элемент arr
будет указателем на список tmp
.