«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему присвоение списка новой переменной в Python не создает отдельную копию?

Почему присвоение списка новой переменной в Python не создает отдельную копию?

Опубликовано 10 ноября 2024 г.
Просматривать:597

Why does assigning a list to a new variable in Python not create a separate copy?

Неожиданная мутация списка

При создании списка типа v = [0,0,0,0,0,0,0,0 ,0], вы можете предположить, что присвоение нового списка переменной создает отдельную ссылку. Однако код, подобный следующему, может демонстрировать неожиданное поведение:

vec = v
vec[5] = 5

Оба vec и v теперь содержат значение 5 по индексу 5. Почему это происходит?

Присвоение ссылки

В Python списки — это изменяемые объекты. Присвоение vec = v не создает новую копию списка. Вместо этого он присваивает ссылку на v. И vec, и v указывают на один и тот же базовый объект списка в памяти.

Любые изменения, внесенные в vec или v, повлияют на исходный список, поскольку это один и тот же список. Вот почему при изменении vec[5] изменяется и v.

Решение

Чтобы создать отдельную копию списка, используйте функцию list():

vec = list(v)

Это создает новый объект списка, который содержит копию элементов из v. Любые изменения, внесенные в vec не повлияет на v, и наоборот.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3