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

如何遍历匹配两个2D数组,实现元素的正确/错误分类?

问题解决:二维数组元素匹配

给定数组

mix = [[1,'Blue'],[2,'Black'],[3,'Black'],[4,'Red']]

possibilities = [[1,'Black'],[1,'Red'],[1,'Blue'],[1,'Yellow'],
         [2,'Green'],[2,'Black'],
         [3,'Black'],[3,'Pink'],
         [4,'White'],[4,'Blue'],[4,'Yellow'],
         [5,'Purple'],[5,'Blue']
        ]

需求

遍历possibilities数组,找到与mix数组中元素完全匹配的项,将匹配项加入correct_guess列表;若mix中的元素在possibilities中无匹配,则加入bad_guess列表。

尝试的错误代码

i = 0
j = 0
bad_guess = []
correct_guess = []
while i < len(mix):
    while possibilities[j] != mix[i]:
        j += 1
    if possibilities[j] == mix[i]:
        i +=1
        correct_guess.append(possibilities[j])
        j = 0
    elif possibilities[j] != mix[i]:
        bad_guess.append(mix[i])
        break

期望输出说明

原期望输出存在笔误([5,'Purple']不属于mix数组,不应出现在结果中),正确期望输出应为:

correct_guess = [[1,'Blue'],[2,'Black'],[3,'Black']]
bad_guess = [[4,'Red']]

错误代码问题分析

  1. 索引越界风险:当mix中的元素不在possibilities中时,内层while循环会持续递增j,直到超出数组索引范围触发IndexError。
  2. 逻辑分支无效:内层while循环仅会在找到匹配项时退出,因此后续的elif分支永远不会执行。
  3. 遍历逻辑混乱:嵌套while的设计无法正确遍历所有可能的匹配情况,一旦遇到不匹配项就会陷入死循环或直接终止程序。

正确解法

方法1:直接遍历判断

遍历mix中的每个元素,直接检查是否存在于possibilities中,按结果分类:

bad_guess = []
correct_guess = []

for item in mix:
    if item in possibilities:
        correct_guess.append(item)
    else:
        bad_guess.append(item)

print("correct_guess =", correct_guess)
print("bad_guess =", bad_guess)

方法2:集合优化查找效率

由于列表的in操作时间复杂度为O(n),将possibilities转换为元组集合(列表不可哈希,无法直接存入集合),可将查找时间降至O(1),适合处理大规模数据:

bad_guess = []
correct_guess = []

# 将possibilities中的列表转为元组,存入集合加速查找
poss_set = set(tuple(p) for p in possibilities)

for item in mix:
    if tuple(item) in poss_set:
        correct_guess.append(item)
    else:
        bad_guess.append(item)

print("correct_guess =", correct_guess)
print("bad_guess =", bad_guess)

最终输出

运行上述代码后,输出结果为:

correct_guess = [[1, 'Blue'], [2, 'Black'], [3, 'Black']]
bad_guess = [[4, 'Red']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:54:26