在代码学院中,有一项练习是定义一个“纯化”数字列表的函数,以便从列表中省略所有奇数。
该指令使我首先考虑从列表中删除奇数,因此我执行了以下功能:
def purify(x):
for n in x:
if n%2!=0:
x.remove(n)
return x
then tested on something like:
print(purify([1,1,2,3,4]))
令我惊讶的是,这无法按预期方式打印列表[2,4],而是打印了[1,2,4]。
然后我的同事建议我通过将数字附加到一个新的列表中来解决这个问题。
def purify(x):
newx=[]
for n in x:
if n%2==0:
newx.append(n)
return newx
但是他们无法解释为什么第一种方法不起作用。
为什么第一种方法不能删除列表中的第二个“ 1”?