Как в списке обнулить каждый второй элемент при помощи цикла for в Python

Дан следующий список:

    prices = [25.8, 45.2, 46.5, 60.4, 61.8, 88.3, 112.7]

Нужно написать два цикла for, один из которых обнулит каждый второй элемент списка (передать диапазон нужно с помощью функций range() и len() и использовать срезы). Второй цикл for должен просуммировать оставшиеся элементы, записав получившееся значение в переменную. Мой код

    for price in range(len(prices[1::2])):
        prices[price] *= 0
    print(prices)

выдает список

    [0.0, 0.0, 0.0, 60.4, 61.8, 88.3, 112.7]

вместо

    [25.8, 0.0, 46.5, 0.0, 61.8, 0.0, 112.7]

Буду благодарна всем, кто укажет на мою ошибку в первом цикле и поможет разобраться со вторым. Заранее всем большое спасибо.


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

Автор решения: artemgh

Используя range. Можно задать шаг третьим параметром. Пример:

    list = [...]

    for i in range(0, len(list), 2):
       list[i] = 0

Соотвественно сделать это подобным образом (перепроверьте и отладьте код пожалуйста)

P.S Если Вы считаете сумму, лучше не обнулять элемент, а вырезать его. Например используя функцию pop()

→ Ссылка
Автор решения: Qwertiy

https://tio.run/##NYxBCoMwEEX3c4q/VBgGE42GQk8iLkRiG5BRUjc9fZoibh68z@cd3/O9a5vzkeISPnhitE48o3NiC3txjL6RrtD8d@@lZRhjZZiI1j0hIirSrK9QGcYWtLpaNcPWDwIuHeNU6g1RUT3vT84/

prices = [25.8, 45.2, 46.5, 60.4, 61.8, 88.3, 112.7]

for i in range(1, len(prices), 2):
  prices[i] = 0

print(prices)
[25.8, 0, 46.5, 0, 61.8, 0, 112.7]
→ Ссылка