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

如何在单个Python函数中两次遍历修改列表得到全偶数结果

解决代码

lst = [1,2,3,4,5,6,7,8,9,10]
lst2 =[11,12,13,14,15,16,17,18,19,20]
                           
def even(fn,sn):
    # 追加lst2中的偶数到目标列表
    for i in sn:
        if i %2 == 0:
            fn.append(i)
    # 过滤目标列表仅保留偶数,切片赋值修改原列表对象
    fn[:] = [x for x in fn if x % 2 == 0]

even(lst,lst2)
print(lst) 

核心修改说明

  • 保留原有追加lst2偶数的逻辑,完成合并操作
  • 新增过滤逻辑使用切片赋值fn[:],而非直接对fn赋值:直接赋值会将fn转为函数内局部变量,不会修改外部传入的原列表;切片赋值会直接修改原列表的内存内容,外部的lst会同步生效
  • 列表推导式快速筛选所有偶数元素,符合过滤要求

更简洁的优化写法

可以将合并+过滤逻辑合并为一步,代码更精简:

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

运行上述代码最终输出为:[2,4,6,8,10,12,14,16,18,20],符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:48:03