Mic*_*ney 0 python iteration for-loop list
我想写一个for测试两个函数的循环list.第一个给出一个int,第二个a 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]
Run Code Online (Sandbox Code Playgroud)
我的问题是,使用上面写的函数,我L = [-10, 5, 6]回来了,因为如果i被删除,由于删除的元素i+1变成了一个i+2.有人知道如何解决这个问题吗?十分感谢!
迭代时,不应该从列表中删除元素.只需创建一个新的列表L1等于L并从L中删除元素并迭代L1.
def f(i):
return i + 2
def g(i):
return i > 5
L = [0, -10, 5, 6, -4]
def applyF_filterG(L, f, g):
L1 = list(L)
for i in L1:
if g(f(i)) == False:
L.remove(i)
applyF_filterG( L, f, g )
print L
Run Code Online (Sandbox Code Playgroud)