我正在使用 python。我有两个列表,列表 1 是 7000 个整数,列表 2 是 25000 个整数。我想遍历列表 1 中的每个数字,找到列表 2 中比列表 1 中每个数字大的最接近数字和小于列表 1 中每个数字的最接近数字,然后计算列表 2 中这两个数字之间的差异。到目前为止我有:
for i in list1:
for j in list 2:
if list2[j]<list1[i]:
a = max(list2)
elif list2[j]>list1[i]:
b = min(list2)
interval = b-a
这似乎行不通。我想在列表 2 中找到小于列表 1 中特定数字的显式数字并知道最大值,然后找出列表 2 中大于列表 1 中数字的最小数字。有没有人有任何想法?谢谢
最佳答案
这是一个使用 NumPy 的矢量化解决方案。它应该非常快,因为它在 Python 中没有循环(除了最后的打印阶段)。
import numpy as np
# set up fake data
l1 = np.array([1.9, 2, 2.1]) # or whatever list you have
l2 = np.array([1, 2, 5, 10]) # as above
l2.sort() # remove this line if it's always sorted
# the actual algorithm
indexes = np.searchsorted(l2, l1, side='right')
lower = l2[indexes - 1]
upper = l2[indexes]
diffs = upper - lower
# print results for debugging
for value, diff in zip(l1, diffs):
print "value", value, "gap", diff
这是上面硬编码测试数据的输出:
value 1.9 gap 1
value 2.0 gap 3
value 2.1 gap 3
关于python - 列表 2 中的哪些数字大于和小于列表 1 中的每个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16791550/