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

如何高效比较list_1元素是否存在于list_2对应索引的子列表?

高效判断对应索引元素是否存在于子列表的方法

我有两个规模极大的列表,需要多次执行以下逻辑:判断list_1中每个元素是否存在于list_2对应索引的子列表中。目前用for循环实现,但效率不足,希望找到更高效的实现方式,也可使用GPU加速。

示例数据:

list_1 = ['Denver Broncos',
 'Carolina Panthers',
 "Levi's Stadium in the San Francisco Bay Area at Santa Clara, California",
 'Carolina Panthers',
 'gold']

list_2 = [['Denver Broncos', 'Denver Broncos', 'Denver Broncos'],
 ['Carolina Panthers', 'Carolina Panthers', 'Carolina Panthers'],
 ['Santa Clara, California',
  "Levi's Stadium",
  "Levi's Stadium in the San Francisco Bay Area at Santa Clara, California."],
 ['Denver Broncos', 'Denver Broncos', 'Denver Broncos'],
 ['gold', 'gold', 'gold']]

当前实现代码:

score = 0
for i in range(len(list_1)):
    if list_1[i] in list_2[i]:
        score += 1

average_score = score / len(list_1)  # 原代码中predicted_answers为笔误,修正为list_1

优化方案

1. CPU端最优:预处理为集合

列表的in操作时间复杂度为O(k)(k是子列表长度),而集合的in操作是O(1)。先将list_2的每个子列表转为集合,能大幅降低单次判断的开销,尤其适合需要多次运行该逻辑的场景:

# 预处理list_2为集合列表(仅需执行一次,可重复使用)
set_list_2 = [set(sublist) for sublist in list_2]
# 用生成器表达式统计符合条件的元素数量
score = sum(item in sub_set for item, sub_set in zip(list_1, set_list_2))
average_score = score / len(list_1)

2. GPU加速:使用CuPy

若有GPU资源,可借助CuPy库将计算转移到GPU上,利用硬件并行提升效率:

首先安装对应CUDA版本的CuPy:

pip install cupy-cuda11x  # 替换为你的CUDA版本,如cupy-cuda12x

实现代码:

import cupy as cp

# 将数据转移到GPU
cp_list_1 = cp.array(list_1)
# 预处理子列表为GPU端的唯一值数组(去重后等价于集合)
cp_unique_list_2 = [cp.unique(cp.array(sublist)) for sublist in list_2]

# 统计符合条件的数量
score = 0
for item, arr in zip(cp_list_1, cp_unique_list_2):
    # 判断item是否在arr中,转换为Python整数累加到score
    score += cp.any(item == arr).item()

average_score = score / len(cp_list_1)

3. CPU向量化:使用NumPy

如果已经在使用NumPy生态,可借助其向量化操作优化,不过提升幅度不如集合预处理:

import numpy as np

# 预处理子列表为去重后的NumPy数组
np_unique_list_2 = [np.unique(np.array(sublist)) for sublist in list_2]
# 用np.isin判断元素是否存在,统计总数
score = sum(np.isin(item, arr) for item, arr in zip(list_1, np_unique_list_2))
average_score = score / len(list_1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:25:19