Я хочу написать цикл for
, который проверяет две функции на list
. Первый возвращает int, второй - boolean
. Если boolean == False
функция должна удалить элемент из списка, так что в конце после вызова функция L должна быть мутирована. Вот пример.False Итерация
def f(i):
return i + 2
def g(i):
return i > 5
L = [0, -10, 5, 6, -4]
def applyF_filterG(L, f, g):
for i in L:
if g(f(i)) == False:
L.remove(i)
L = [5, 6]
Моя проблема заключается в том, что с помощью функции написанной выше я получаю L = [-10, 5, 6]
назад, потому что, если i
удаляется, i+1
превращается в i+2
из удаляемого элемента. Кто-нибудь знает, как это решить? Большое спасибо!
'for i in L' вместо этого использования' для i в L [:] ', он будет итерировать, хотя это копия. –
'[i for i in L if i + 2> 5]' также дает тот же результат, который вы ожидаете. –