我想寫一個for
循環,測試list
上的兩個函數。第一個返回int,第二個返回boolean
。如果boolean == False
該函數應該從列表中刪除元素,所以最後在調用函數L後應該已經發生了變異。這是一個例子。錯誤迭代
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
,因爲被刪除的元素的。有人知道如何解決這個問題嗎?十分感謝!
'對於我在L'而不是'L在這裏使用'[:]',它會迭代,儘管它是複製。 –
'[我爲我在L如果我+ 2> 5]'這也給出了你期望的結果。 –