В Python все должно быть представлено указателем. Поэтому я ожидал следующий код, чтобы изменить первоначальный список a
, как хорошо, так как я думал, что список copy
будет содержать все оригинальные указатели, содержащиеся в a
:Почему операции с копией списка не изменили элементы в исходном списке?
import copy
a = ["a", "a"]
copy = copy.copy(a)
for (count, e) in enumerate(copy):
copy[count] += "b"
print copy
print a
Я ожидал увидеть ["ab", "ab"]
. Удивительно, но a
по-прежнему содержит ["a", "a"]
только в то время как copy
действительно содержит ["ab", "ab"]
. Использование copy = list(a)
тоже не работает.
Я думал, что этот результат случится, если я напишу copy = copy.deepcopy(a)
.
Где я ошибался? Каков надлежащий способ получения ссылок на все элементы в списке и их изменение в зеркальном списке? Или это просто невозможно в Python?
Строки неизменяемы? – Zizouz212
Строки неизменяемы. – chepner
@chepner Ударьте вас на 3 секунды: P – Zizouz212