Как заменить элементы в списке? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь написать al oop, который заменяет все элементы списка на элементы, которые наполовину больше. Если список [1,2,3,4], новый список должен читать [0,5,1,1.5,2]. БЕЗ СОЗДАНИЯ НОВОГО СПИСКА!

Я попробовал следующее

for i in Glist:
    i = Glist[i]/2
    Glist.append(i)

И горячая ошибка: список индекса выходит за пределы диапазона, как остановить l oop?

также пробовал это:

for i in mylist:
    i = i/2
    mylist.append(i)

не работал

Ответы [ 2 ]

8 голосов
/ 13 февраля 2020

Если вы хотите заменить элементы списка, то длина списка не должна меняться, как это делает append. Вместо:

for i,v in enumerate(Glist):
    Glist[i] = v/2.0
4 голосов
/ 13 февраля 2020

Обратите внимание, что перебор списка при добавлении к нему является идеальным рецептом для бесконечного l oop. Помимо iiu c вы хотите изменить фактические элементы, здесь вы просто добавляете в конец списка.

Вы можете использовать регулярное для l oop и просто изменить в место с:

for i in range(len(Glist)):
    Glist[i] /= 2.

print(Glist)
[0.5, 1.0, 1.5, 2.0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...