Python报错ValueError: -5 is not in list问题修复求助
问题解决:获取列表中负数的索引
错误原因
你的代码报错核心是逻辑完全偏离需求:
- 第一次遇到负数
-5时,结果列表ls还是空的,ls.index(-5)会直接抛出ValueError——因为-5根本不在空列表里。 - 就算
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
相关产品推荐
相关产品推荐

