+ 2
Почему не работает код? Why this don't work?
prices = [125000, 78000, 110000, 65000, 300000, 250000, 210000, 150000, 165000, 140000, 125000, 85000, 90000, 128000, 230000, 225000, 100000, 300000] count=0 aver=sum(prices)//len(prices) for i in prices: if i>aver: prices.remove(i) print(aver) print(prices)
7 Answers
+ 1
when you do list item removed then its size get decreased by 1. list works on indexes.
so if list [1,2,3]
for i in list:
i=1
if you remove 1 then list size is 2 and list is [2,3]
in next iteration , i=3 instead of 2 because current index value is 1, not 0 so it skipping 2 (untouched)
когда вы удаляете элемент списка, его размер уменьшается на 1. так что если список [1,2,3] для i в списке: я = 1 если вы удалите 1, размер списка будет 2, а список будет [2,3] на следующей итерации i = 3 вместо 2, потому что текущее значение индекса равно 1, а не 0, поэтому 2 пропускаются (нетронутые)
+ 1
Не удаляет элементы выше среднего значения. Только часть элементов.
+ 1
you're modifying original list in loop so its skipping some items so items.copy() in loop like :
вы изменяете исходный список в цикле, поэтому он пропускает некоторые элементы, поэтому prices.copy () в цикле, например:
for I in prices.copy() :
use a copy instead of original.
+ 1
Спасибо. Вы очень помогли. С cooy() всё работает. А почему в цикле пропускаются элементы? По какому принципу он решает что оставить?
+ 1
Thak u very match.
+ 1
You want to do?