我试图找到两个列表相交的位置,并使用较长的列表返回该交集的索引位置。
目前我有一个方法可行,但它很难看,我设置一个带有范围(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]
答案 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))