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

如何获取嵌套列表中各子列表最小值的索引?代码调试求助

问题分析与解决方案

你的代码返回空列表的原因很明确:你传递给find函数的是一个生成器表达式,而非逐个传入minimum_distance里的具体数值。

我来拆解下问题核心:

  • 你定义的find(c)函数是期望接收单个数值c,然后在distances中查找它的索引;
  • 但调用时你传了find(k for k in minimum_distance),此时函数参数c变成了整个生成器对象,而非生成器内的每个数值;
  • 所以distance.index(c)实际上是在列表里查找生成器这个对象,自然找不到匹配项,最终返回空列表。

另外补充一点:你的minimum_distance包含两个元素,对应distances两个子列表的最小值,正确结果应该是[(0, 2), (1, 6)],而非你预期的仅[(1,6)]哦。

修正方案1:修改find函数,支持接收最小值列表

把函数改成遍历传入的所有最小值,逐个查找索引:

distances = [[6.75, 0.75, 0.25, 2.25, 2.75, 1.75, 5.75, 2.75, 3.75, 7.75], 
             [1.833333333333333, 4.166666666666667, 5.166666666666667, 7.166666666666667, 2.166666666666667, 3.166666666666667, 0.833333333333333, 2.166666666666667, 1.166666666666667, 2.833333333333333]]
minimum_distance = [0.25, 0.833333333333333]

def find(min_values):
    # 先遍历每个要查找的最小值
    for val in min_values:
        for i, distance in enumerate(distances):
            try:
                j = distance.index(val)
                yield (i, j)
            except ValueError:
                continue

matches = list(find(minimum_distance))
print(matches)  # 输出: [(0, 2), (1, 6)]

修正方案2:不修改函数,调整调用方式

保持原find函数不变,改成逐个传入minimum_distance里的元素:

distances = [[6.75, 0.75, 0.25, 2.25, 2.75, 1.75, 5.75, 2.75, 3.75, 7.75], 
             [1.833333333333333, 4.166666666666667, 5.166666666666667, 7.166666666666667, 2.166666666666667, 3.166666666666667, 0.833333333333333, 2.166666666666667, 1.166666666666667, 2.833333333333333]]
minimum_distance = [0.25, 0.833333333333333]

def find(c):
    for i, distance in enumerate(distances):
        try:
            j = distance.index(c)
        except ValueError:
            continue
        yield i, j

# 遍历minimum_distance的每个元素,逐个传入find函数
matches = [match for val in minimum_distance for match in find(val)]
print(matches)  # 输出: [(0, 2), (1, 6)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:58:08