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

Python中值存在仍触发list.index ValueError问题求助

问题解决:获取子列表第三个元素最大值的索引

原代码存在两个关键问题:

  • vertex[:][2]是错误写法:vertex[:]会创建整个列表的副本,[2]是取副本的第3个元素(即单个子列表),而非所有子列表的第3个元素。这导致你实际是在某一个子列表里找最大值的索引,一旦最大值不在这个子列表里,index()就会抛出找不到值的错误。
  • 求最大值的写法冗余:max([vertex[i][2]] for i, _ in enumerate(vertex))[0]完全可以简化为max(v[2] for v in vertex),前者每次生成单元素列表再取第一个,完全没必要。

正确写法

直接遍历列表,记录最大值对应的索引:

max_val = -float('inf')
closest_vertex = 0
for idx, sub_list in enumerate(vertex):
    current = sub_list[2]
    if current > max_val:
        max_val = current
        closest_vertex = idx

或者用更简洁的一行写法(可读性稍弱):

closest_vertex = max(enumerate(vertex), key=lambda x: x[1][2])[0]

原代码初始能运行的原因

只是刚好最大值出现在vertex[2]这个子列表里,所以vertex[:][2].index(...)能找到值,一旦最大值位置变化,就会触发报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:32:31