gpt4 book ai didi

python - 对于列表的每个元素,从不同的列表中找到最接近的日期

转载 作者:太空狗 更新时间:2023-10-30 01:56:26 24 4
gpt4 key购买 nike

我有 2 个列表:

l1 = [ '09/12/2017', '10/24/2017' ]
l2 = [ '09/15/2017', '10/26/2017', '12/22/2017' ]

对于 l1 中的每个自动收报机,我想在它之后找到离 l2 最近的元素,所以输出应该是

l3 = [ '09/15/2017', '10/26/2017' ]

正确的方法似乎是以相反的顺序明确地并行迭代两个列表,但我希望有一个更“pythonic”的解决方案..

编辑:我确实想要一个最优的复杂性解决方案,(假设列表已排序),我认为是 O(max(len(l1), len(l2)))。

最佳答案

您可以通过传递 lambda 表达式列表理解min 方法结合使用。 p>

from datetime import datetime
l1 = [ '09/12/2017', '10/24/2017' ]
l2 = [ '09/15/2017', '10/26/2017', '12/22/2017' ]

l1 = [min(l2, key=lambda d: abs(datetime.strptime(d, "%m/%d/%Y") - datetime.strptime(item, "%m/%d/%Y"))) for item in l1]

输出

['09/15/2017', '10/26/2017']

如果您想要更高效的解决方案,您可以编写自己的insert 排序算法。

def insertSortIndexItem(lst, item_to_insert):
index = 0
while index < len(lst) and item_to_insert > lst[index]:
index = index + 1
return lst[index]

l2 = sorted(l2, key=lambda d: datetime.strptime(d, "%m/%d/%Y"))
l1 = [insertSortIndexItem(l2, item) for item in l1]

关于python - 对于列表的每个元素,从不同的列表中找到最接近的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53120949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com