Если я правильно понимаю, вы можете разделить свои дельты времени в разных списках, а затем просто использовать min
для получения минимальных значений.
Используя свой собственный код:
list3=[]
for value1 in list1:
value1 = datetime.strptime(value1, '%Y-%m-%dT%H:%M:%S.000-0400')
aux_list = []
for value2 in list2:
value2 = datetime.strptime(value2, '%Y-%m-%dT%H:%M:%S.000-0400')
if value1 < value2:
value3 = value2 - value1
aux_list.append(value3)
list3.append(aux_list)
Таким образом, ваш list3
содержит разницу от каждого элемента list1
ко всем элементам list2
>>> print(list3)
[[datetime.timedelta(0, 2976), datetime.timedelta(3, 30187), datetime.timedelta(3, 30198), datetime.timedelta(6, 6277)],
[datetime.timedelta(3, 22987), datetime.timedelta(3, 22998), datetime.timedelta(5, 85477)]]
Тогда вы можете получить минимальную разницу от первого элемента, используя min(list[0])
идля второго min(list[1])
Обратите внимание, что если у вас есть
l1 = [datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.000-0400') for x in list1]
l2 = [datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.000-0400') for x in list2]
, весь ваш код может быть записан в одну строку, используя понимание списка:
k = [min([v2 - v1 for v2 in l2 if v2>v1]) for v1 in l1]
- l1
и l2
ваш список datetime
объектов.Это дает
0:49:36 # k[0]
3 days, 6:23:07 # k[1]