Задача, есть список вида -
a = [1,2,3,4,4,4]
a = [4,4,4]
В чем проблема?
for i in a:
if i != max(a): a.remove(i)
# Выведет [2,4,4,4]
Удаляются только числа 1 и 3, двойку он упорно не хочет удалять с первого раза, однако при второй попытке воспроизвести аналогичный код удаляется и двойка, и остается желаемый результат -
Почему так происходит?
Собственно решение которое я нашел - это использование встроенной функции filter():
def delet(elem):
if elem != max(a): return False
return True
filter(delet, a) # Всегда возвращает нужный результат с первого раза
Вроде бы действия аналогичны, только первое делается напрямую, а второе через функцию, парадокс …
