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

如何直接修改原列表而非其副本?实现移除奇数、对偶数平方功能

解决方案

直接使用切片赋值对原列表做原地修改即可,既不会改变原列表的内存id,还能一次性完成过滤奇数、偶数平方的操作:

def modify_list(l):
    l[:] = [i**2 for i in l if i % 2 == 0]
    return l

原理解释

  • l[:] = 新列表 属于原地操作:会直接用右侧新列表的内容覆盖原列表的全部元素,不会创建新的列表对象,因此操作前后原列表的id保持完全一致,满足id(返回值) == id(传入列表)的要求。
  • 你之前尝试的遍历调用remove的方案存在两个问题:
    • 遍历列表的同时删除元素会导致索引错位,部分奇数会被漏删
    • 仅实现了移除奇数的逻辑,没有对剩余偶数做平方处理

效果验证

你可以用以下代码测试效果:

test_list = [1, 2, 3, 4, 5, 6]
original_id = id(test_list)
processed_list = modify_list(test_list)
print(processed_list) # 输出:[4, 16, 36]
print(id(processed_list) == original_id) # 输出:True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:15:04