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

如何展示数组中重复最小值对应的关联元素?

解决方案:获取所有最小值对应的名字

你的代码目前只能记录单个最小值的位置,要实现收集所有匹配项,可以参考以下两种思路:

问题分析

原代码存在几个问题:

  • 变量名大小写不一致(I和i),运行会触发NameError
  • 仅记录了首次更新最小值的位置,无法捕获重复出现的最小值对应的名字
  • print语句缺少逗号,存在语法错误

方案一:使用内置函数简化逻辑

利用Python内置的min()快速获取最小值,再通过列表推导式收集所有对应名字:

def least(names, numbers):
    # 将numbers元素转为整数,统一类型便于比较
    num_list = [int(num) for num in numbers]
    min_value = min(num_list)
    # 收集所有值等于最小值的名字
    matched_names = [names[i] for i, num in enumerate(num_list) if num == min_value]
    # 格式化输出结果
    print(f"最小值{min_value}对应的名字:{matched_names}")

# 测试示例
names = ["Alice", "Bob", "Charlie", "David"]
numbers = ["7", "3", "5", "3"]
least(names, numbers)

运行后会输出:最小值3对应的名字:['Bob', 'David']

方案二:手动遍历实现(适合理解基础逻辑)

如果想自己实现遍历逻辑,可通过维护一个名字列表来记录所有匹配项:

def least(names, numbers):
    # 处理空数组或长度不匹配的边界情况
    if not names or not numbers or len(names) != len(numbers):
        print("输入数组不合法")
        return
    
    # 初始化最小值和对应名字列表
    min_value = int(numbers[0])
    matched_names = [names[0]]
    
    # 从第二个元素开始遍历
    for i in range(1, len(numbers)):
        current_num = int(numbers[i])
        if current_num < min_value:
            # 找到更小的值,重置最小值和名字列表
            min_value = current_num
            matched_names = [names[i]]
        elif current_num == min_value:
            # 遇到相同最小值,添加对应名字
            matched_names.append(names[i])
    
    print(f"最小值{min_value}对应的名字:{matched_names}")

# 测试示例
names = ["Alice", "Bob", "Charlie", "David"]
numbers = ["7", "3", "5", "3"]
least(names, numbers)

这个方案的逻辑是:遍历过程中,一旦发现更小的值就重置结果列表;遇到相同最小值则追加名字,确保所有匹配项都被收集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:15:39