У меня возникли проблемы с редактированием элементов в списке в Python, у меня есть следующий код:Python: Элементы в списке не меняются?
mylist = ["one", "day", "soon"]
for x in mylist:
x = "New word"
print(x)
print(mylist)
Я бы ожидать, что выход будет «новое слово» в три раза (один раз для каждой итерации) а затем список [ «Новое слово», «Новое слово», «Новое слово»], но вместо этого я получаю:
Новое слово
Новое слово
Новое слово
[ «один» , «день», «скоро»]
Вопрос: Почему список, по-видимому, меняется, но затем возвращается к исходной форме при печати в виде всего списка?
Примечание: Я исправили проблему с помощью следующего кода, но я до сих пор интересно, почему оригинальный метод не
mylist2 = ["a", "b", "c"]
for x in mylist2 :
mylist2[mylist2.index(x)] = "Woo"
print(mylist2)
Подумайте, что 'x' является передачей по значению' mylist2'. – intboolstring
@intboolstring Я не совсем уверен, что точно знаю, что вы имеете в виду? Я просто собираю программирование снова после долгого перерыва, что вы подразумеваете под поваром? – Plopern
Я сейчас на мобильном телефоне, поэтому я не могу набрать слишком много. Google pass-by-value vs. pass по ссылке – intboolstring