Как в списке обнулить каждый второй элемент при помощи цикла 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 шт):
Используя range. Можно задать шаг третьим параметром. Пример:
list = [...]
for i in range(0, len(list), 2):
list[i] = 0
Соотвественно сделать это подобным образом (перепроверьте и отладьте код пожалуйста)
P.S Если Вы считаете сумму, лучше не обнулять элемент, а вырезать его. Например используя функцию pop()
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]