python_时间戳对齐

需求

python 有2个保存时间戳的list, listA 和 listB, 对于listA中的每一个时间戳元素cur_ts, 查找listB中 与cur_ts最接近的前后两个时间戳元素

代码

python 复制代码
import bisect

# 示例数据
listA = [1, 5, 10, 15]
listB = [2, 6, 8, 12, 14, 18]

def find_closest_timestamps(listA, listB):
    results = []
    for cur_ts in listA:
        pos = bisect.bisect_left(listB, cur_ts)
        if pos == 0:
            closest_before = None
            closest_after = listB[0]
        elif pos == len(listB):
            closest_before = listB[-1]
            closest_after = None
        else:
            closest_before = listB[pos - 1]
            closest_after = listB[pos]
        results.append((cur_ts, closest_before, closest_after))
    return results

# 执行函数并打印结果
results = find_closest_timestamps(listA, listB)
for cur_ts, before, after in results:
    print(f"当前时间戳: {cur_ts}, 最接近的前一个时间戳: {before}, 最接近的后一个时间戳: {after}")

以上代码的工作原理如下:

  1. 使用 bisect_leftlistB 中找到插入 cur_ts 的位置 pos
  2. 根据 pos 的值来确定 cur_tslistB 中最接近的前后两个时间戳:
    • 如果 pos 为 0,说明 cur_ts 小于 listB 中的所有元素,此时没有比 cur_ts 小的元素。
    • 如果 pos 等于 listB 的长度,说明 cur_ts 大于 listB 中的所有元素,此时没有比 cur_ts 大的元素。
    • 否则,listB[pos - 1] 是最接近 cur_ts 且小于 cur_ts 的元素,listB[pos] 是最接近 cur_ts 且大于等于 cur_ts 的元素。

运行这段代码,输出结果为:

当前时间戳: 1, 最接近的前一个时间戳: None, 最接近的后一个时间戳: 2

当前时间戳: 5, 最接近的前一个时间戳: 2, 最接近的后一个时间戳: 6

当前时间戳: 10, 最接近的前一个时间戳: 8, 最接近的后一个时间戳: 12

当前时间戳: 15, 最接近的前一个时间戳: 14, 最接近的后一个时间戳: 18

这样你就可以找到 listA 中每个时间戳在 listB 中最接近的前后两个时间戳了。

相关推荐
Wzx1980121 分钟前
go聊天室
开发语言·后端·golang
子午12 分钟前
【蘑菇识别系统】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积网络+resnet50算法
人工智能·python·深度学习
Mr_Xuhhh17 分钟前
pytest -- 指定⽤例执⾏顺序
开发语言·python·pytest
tokepson20 分钟前
关于python更换永久镜像源
python·技术·记录
F_D_Z24 分钟前
【解决办法】网络训练报错AttributeError: module ‘jax.core‘ has no attribute ‘Shape‘.
开发语言·python·jax
chenyuhao202428 分钟前
MySQL索引特性
开发语言·数据库·c++·后端·mysql
前端伪大叔37 分钟前
第29篇:99% 的量化新手死在挂单上:Freqtrade 隐藏技能揭秘
后端·python·github
laocooon5238578861 小时前
vue3 本文实现了一个Vue3折叠面板组件
开发语言·前端·javascript
zzlyx991 小时前
用C#采用Avalonia+Mapsui在离线地图上插入图片画信号扩散图
java·开发语言·c#
韩曙亮1 小时前
【人工智能】AI 人工智能 技术 学习路径分析 ① ( Python语言 -> 微积分 / 概率论 / 线性代数 -> 机器学习 )
人工智能·python·学习·数学·机器学习·ai·微积分