Неожиданная мутация списка
При создании списка типа 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