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

Python报错ValueError: -5 is not in list问题修复求助

问题解决:获取列表中负数的索引

错误原因

你的代码报错核心是逻辑完全偏离需求:

  1. 第一次遇到负数-5时,结果列表ls还是空的,ls.index(-5)会直接抛出ValueError——因为-5根本不在空列表里。
  2. 就算ls非空,ls.index(i)找的是元素i在结果列表中的位置,而非原列表x中负数的索引,完全不符合你的需求。

正确解法

解法1:用enumerate遍历索引与元素(直观易懂)

def negative_nbr(x):
    ls = []
    # enumerate同时返回原列表的索引和对应元素
    for idx, num in enumerate(x):
        if num < 0:
            ls.append(idx)
    return ls

y = [1,-5, 3, -4, 3]
print(negative_nbr(y))  # 输出: [1, 3]

解法2:列表推导式(简洁高效)

用Python的列表推导式简化循环+判断逻辑,代码更紧凑:

def negative_nbr(x):
    return [idx for idx, num in enumerate(x) if num < 0]

y = [1,-5, 3, -4, 3]
print(negative_nbr(y))  # 输出: [1, 3]

关键说明

enumerate()是Python处理索引问题的常用工具,遍历列表时会同时返回索引值和对应元素,完美匹配你“获取负数索引”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:37:16