关于lis中删除项目过程的问题

2024-06-13 18:32:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在codecademy中,有一个关于定义一个函数来“净化”一个数字列表的练习,以便从列表中省略所有奇数

此指令允许我首先考虑从列表中删除奇数,因此我创建了以下函数:

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”


Tags: 方法函数in列表forreturnif定义