Во-первых, я настоятельно рекомендую переименовать вашу переменную list
в другое. list
- это имя встроенного конструктора списков, и вы скрываете его нормальную функцию. Я буду переименовывать list
в a
в следующем.
Имена Python - это ссылки , привязанные к объектам. Это означает, что, если вы не создаете несколько списков, всякий раз, когда вы используете a
, это относится к тому же самому фактическому объекту списка, что и в последний раз. Поэтому, когда вы вызываете
listoflists.append((a, a[0]))
, вы можете позже изменить a
, и он изменит то, на что указывает первый элемент этого кортежа. Это не происходит с a[0]
, потому что объект (который является целым числом), на который указывает a[0]
, не изменяется (хотя a[0]
указывает на разные объекты во время выполнения вашего кода).
Вы можете создать копию всего списка a
с помощью конструктора list
:
listoflists.append((list(a), a[0]))
Или вы можете использовать нотацию фрагмента , чтобы сделать копию:
listoflists.append((a[:], a[0]))