Изменение списка python

Можете ли пояснить, почему в коде (написан для примера) вроде всё логически нормально, но по итогу список не изменяется. При этом если использовать обращение через индекс посредством Items.index(Item) то всё работает. Вроде как код написанный ниже должен работать и так, где я ошибся?

Items = ["weapon","offhand","helmet","boots","belt","offhand","gloves","bonus"]
for Item in Items:
    Item += "1234"
print(Items)

Заранее спасибо.


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Вариант обновления списка без индексов. Так как список хранит строки, а строки неизменны, то в обычном цикле for Item in Items: обновить список нельзя. Можно создать новый временный и заместить элементы старого. Вот так:

Items = ["weapon","offhand","helmet","boots","belt","offhand","gloves","bonus"]
Items[:] = [Item + "1234" for Item in Items]

Важно понимать разницу между Items = и Items[:] = . Первое присваивание удаляет старый список и присваивает переменной новый. Второе присваивание в старом списке изменяет элементы. Сам список не удаляется.

→ Ссылка