python - 列表 2 中的哪些数字大于和小于列表 1 中的每个数字

标签 python list search

我正在使用 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/

相关文章:

python - 重复的 POST 请求导致错误 "socket.error: (99, ' 无法分配请求的地址')”

python - 如何解决python硬编码字典编码问题

python - Discord.py 服务器统计命令

java - 如何在 List<Serializable> 内容 JaxB 中添加元素?

Python:如果当前元素小于前一个元素,则在子集中拆分列表

list - 仅使用 `!!` 和 `length` 实现矩阵的转置

php - 使用数据库或公共(public)变量从大数据中选择

python - 在 pyspark 数据帧的其余列中搜索 column1 中的值

java - 如何在cloudant中构建类来管理使用JSON文档的搜索索引查询的输出

python - 为 Sublime Text 2 的嵌入式 Python 解释器安装 IPython