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

如何修复识别异类列表索引的函数?解决索引0时的失效问题

问题描述

给定一组列表,其中恰好存在一个与其他列表不同的异类列表。编写的Python代码如下,用于查找该异类列表的索引:

import numpy as np

a = [[1, -2], [1, -2], [1,6], [1, -2], [1, -2]]
     
def find_idx(lists):
     for i in range(len(lists)-1):
          diff = np.array(lists[0])-np.array(lists[i+1])
          for k in diff:
               if k != 0:
                    print(i+1)
find_idx(a)

该函数在多数输入下运行正常,但当异类列表位于索引0时会返回错误结果。例如输入lists = [[1, 6],[1, -2], [1, -2], [1, -2], [1, -2]]时,函数会输出所有其他索引,唯独不返回正确的索引0。需要修改函数,使其能正确处理异类列表位于索引0的情况。

解决方案

原代码的核心问题是始终拿第一个元素和后续元素对比,没法判断第一个元素本身是不是异类。我们可以先确定多数元素的基准,再遍历所有列表找出和基准不同的那个,具体实现如下:

修改后的代码(通用版)

import numpy as np

def find_idx(lists):
    # 取前三个元素统计,因为题目保证只有一个异类,前三个里必然有至少两个是多数派
    candidates = lists[:3]
    # 把列表转成元组才能当字典的键,统计每个候选出现的次数
    count = {}
    for lst in candidates:
        key = tuple(lst)
        count[key] = count.get(key, 0) + 1
    # 找到出现次数最多的那个,作为多数派基准
    base = max(count, key=count.get)
    
    # 遍历所有列表,找到和基准不同的那个的索引
    for idx, lst in enumerate(lists):
        if tuple(lst) != base:
            print(idx)
            return  # 题目说只有一个异类,找到就直接返回

# 测试两种场景
find_idx([[1, -2], [1, -2], [1,6], [1, -2], [1, -2]])  # 输出2
find_idx([[1, 6],[1, -2], [1, -2], [1, -2], [1, -2]])  # 输出0

简化版实现(利用numpy向量对比)

如果不想用统计的方式,也可以通过判断前几个元素的关系快速确定基准:

import numpy as np

def find_idx(lists):
    # 先看第二个和第三个元素是否相同,相同则它们是多数派基准
    if np.array_equal(lists[1], lists[2]):
        base = lists[1]
        # 检查第一个元素是不是异类
        if not np.array_equal(lists[0], base):
            print(0)
            return
        # 第一个不是异类,遍历后续找不同的
        for idx in range(1, len(lists)):
            if not np.array_equal(lists[idx], base):
                print(idx)
                return
    else:
        # 前三个里第二个和第三个不同,说明异类在0、1、2中,拿第四个元素当参照
        if np.array_equal(lists[0], lists[3]):
            print(1)
        else:
            print(0)

# 测试
find_idx([[1, 6],[1, -2], [1, -2], [1, -2], [1, -2]])  # 输出0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:05:00