You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一个Python函数内两次迭代列表,追加后仅保留所有偶数

问题解答

你的需求可以实现,你自行尝试的代码运行失败原因如下:
Python中列表是可变对象,当你在函数内部执行fn = list(filter(lambda x: x %2 == 0, fn))时,只是将函数内的局部变量fn指向了新生成的列表对象,并没有修改外部传入的原列表本身,因此外部的lst不会同步更新。

正确修改方案

你只需要将最后一步的赋值改为切片赋值,直接覆盖原列表的所有元素即可,无需使用fn + sn的写法:

def even(fn,sn):
    for i in sn:
        if i %2 ==0:
            fn.append(i)
    # 切片赋值直接修改原列表内容,不会改变fn的指向
    fn[:] = list(filter(lambda x: x %2 == 0, fn))

运行该函数后打印lst即可得到你期望的结果[2,4,6,8,10,12,14,16,18,20]。

其他可选实现(同样满足要求)

你提到的示例2也符合不使用列表相加的要求,逻辑更简洁:

def even(fn, sn):
    fn.extend(sn)
    fn[:] = [x for x in fn if x % 2 == 0]

内容的提问来源于stack exchange,提问作者user16836821

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:06:02