检索两个长度不等的列表的交集的索引

时间:2017-05-24 14:03:43

标签: python-2.7 set list-comprehension evaluate

我试图找到两个列表相交的位置,并使用较长的列表返回该交集的索引位置。

目前我有一个方法可行,但它很难看,我设置一个带有范围(0,len(a))的for循环并制作一个计数器变量,如果round(a,3)等于或大于比b,我增加计数器并附加一个占位符列表。

我尝试过使用set.intersect并毫无运气地进行评估。我知道有一种更清洁的方式。如果有人可以推荐使用numpy的解决方案,这也有帮助。

例如:

a = [0,0.14431, 0.1695151036, 0.2421644337, 0.2663808771, 0.4601124241, 0.4843288674, 0.5206535325, 0.6659521927, 0.7022768578, 0.7507097445, 0.8354672963, 0.9202248481, 0.9565495132, 1.0170906216]


b = [0, 0.25, 0.50, 0.75, 1.0]

我希望它返回:

output = [0,4,7,10,14]

1 个答案:

答案 0 :(得分:0)

在此期间得到了这个,减少了很多行,但不确定它是否更快,因为它每次仍然遍历整个循环(并且一个列表实际上就像实际文件中的10000个项目)

    placeholder = []
    for value in b:
        match_min_value = min(a, key=lambda x:abs(x-value))
        placeholder.append(a.index(match_min_value))