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

如何无需循环利用右对齐长列表索引查找短列表中指定值位置

实现方法

这里以Python为例,提供两种无显式循环的简洁实现方案:

方案1:原生Python实现(无需第三方依赖)

核心逻辑是先计算两个列表右对齐的偏移量,再筛选符合条件的下标做偏移计算:

list1 = [1, 2, 1]
list2 = [4, 2, 3, 5]

offset = len(list2) - len(list1)
result = [idx + offset for idx, val in enumerate(list1) if val == 1]
print(result) # 输出 [1, 3]

方案2:NumPy实现(无任何遍历代码)

如果允许使用数值计算库,用NumPy的内置筛选逻辑可以完全避免手写循环:

import numpy as np

list1 = [1, 2, 1]
list2 = [4, 2, 3, 5]

offset = len(list2) - len(list1)
result = (np.where(np.array(list1) == 1)[0] + offset).tolist()
print(result) # 输出 [1, 3]

逻辑说明

两个列表右对齐时,短列表的第一个元素对应长列表的下标就是两列表的长度差,因此只要把短列表中匹配元素的下标加上这个偏移量,就能直接得到长列表中对应的索引位置。

内容的提问来源于stack exchange,提问作者Sam-gege

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:45:02