Вопрос: var = [[0] * 5] * 5 Помогите понять списки python?


Я наткнулся на кусочек декларации списка python. Я немного запутался в поведении. Пожалуйста, объясните это. Ценю вашу помощь.

    >>> v  = [[0]*2]*2
    >>> v
    [[0, 0], [0, 0]]
    >>> v[1][1] = 23
    >>> v
    [[0, 23], [0, 23]]
    >>> v[1][1] = 44
    >>> v
    [[0, 44], [0, 44]]
    >>>

4


источник


Ответы:


* оператор для списков повторяет их содержимое, как вы можете отчетливо видеть на выходе.

Однако он не копирует элементы, он просто копирует ссылки на объекты. Поэтому в этом случае оба [0,0 ]s имеют один и тот же основной объект списка, который должен объяснить явление.

Чтобы убедиться в этом, попробуйте v[0] = [0,44] назначить новый (и, следовательно, независимый!) объект списка первому элементу главного списка; затем повторите попытку изменения v[1][1], На этот раз на выходе изменится только одна запись.


7



v - просто список списков.

* первая строка первой строки означает «повторить 2 раза 0 в моем списке». Таким образом, каждый список гнезд имеет размер 2 и содержит нули.

Затем вы просто устанавливаете значения для определенных ячеек списка списков :)


0