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

Python不创建新列表原地移除列表中负数的实现方法及代码问题修复

问题原因

原有代码在正向遍历列表的同时删除元素,会触发索引偏移问题:每删除一个元素,该位置后方的所有元素都会向前移动一位,下一轮循环会直接跳过移动到当前位置的新元素,导致部分负数漏检无法被删除。
举个简单的测试场景:输入列表为[-2, -1, 0],第一轮遍历到-2执行删除后,列表变为[-1, 0],下一轮循环会直接读取列表第二个元素0,-1被跳过不会被检测到。

修复后的函数实现

采用倒序遍历索引的方案,倒序删除元素不会影响未遍历的前半部分元素的索引,完全满足原地修改、不创建新列表的要求,仅需要替换函数内部逻辑即可:

def removeNegatives(listOfIntegers):
    # 从最后一位索引倒序遍历到首位索引
    for i in range(len(listOfIntegers) - 1, -1, -1):
        if listOfIntegers[i] < 0:
            del listOfIntegers[i]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:06:05