如何无需循环利用右对齐长列表索引查找短列表中指定值位置
实现方法
这里以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
相关产品推荐
相关产品推荐

