Python 我有两个列表,我想知道一个列表中的日期是否介于另一个列表中的两个日期之间。我该怎么做?

Python 我有两个列表,我想知道一个列表中的日期是否介于另一个列表中的两个日期之间。我该怎么做?,python,list,datetime,Python,List,Datetime,我有一个列表a,如下所示: [((5.8, datetime.datetime(2016, 3, 5, 2, 8, 47))] [((date1, datetime.datetime(2016, 2, 8, 1, 34)), (date2, datetime.datetime(2016, 5, 2, 1, 42)), (date3, datetime.datetime(2016, 10, 2, 11, 23))] 我有另一个列表B,如下所示: [((5.8, datetime.datetim

我有一个列表a,如下所示:

[((5.8, datetime.datetime(2016, 3, 5, 2, 8, 47))]
[((date1, datetime.datetime(2016, 2, 8, 1, 34)),
(date2, datetime.datetime(2016, 5, 2, 1, 42)),
(date3, datetime.datetime(2016, 10, 2, 11, 23))]
我有另一个列表B,如下所示:

[((5.8, datetime.datetime(2016, 3, 5, 2, 8, 47))]
[((date1, datetime.datetime(2016, 2, 8, 1, 34)),
(date2, datetime.datetime(2016, 5, 2, 1, 42)),
(date3, datetime.datetime(2016, 10, 2, 11, 23))]
我想知道列表A中的日期是否在列表B中的任何连续日期之间。换句话说,使用此处列表的输出将是:

[(5.8, date2)] 

这是因为列表A中的日期介于列表B的第一个和第二个日期之间。所以我从列表A(5.8)和(date2)中输出了重要值。我不会使用date1或date3,因为我希望确保列表1中的日期介于两个日期之间,并且我使用两个日期中的后一个日期作为输出。

要通过暴力实现这一点,您可以使用with list CONTRUMENT expression作为:

import datetime

list_a = [(5.8, datetime.datetime(2016, 3, 5, 2, 8, 47))]
#        v^  typo in actual list format       
list_b =[('date1', datetime.datetime(2016, 2, 8, 1, 34)),
          ('date2', datetime.datetime(2016, 5, 2, 1, 42)),
          ('date3', datetime.datetime(2016, 10, 2, 11, 23))]

my_list = [(num_a, str_b2) for num_a, date_a in list_a \
              for (str_b1, date_b1), (str_b2, date_b2) in zip(list_b, list_b[1:]) \
                   if date_b1 < a2 < date_b2]

你试过解决这个问题吗?你能给我们看一些我脑子里的代码吗…我真的一点线索都没有。我要看看莫伊努丁·夸迪的答案中的拉链是什么!在询问之前,您应该将问题分解为更简单的部件。假设您使用的不是日期,而是整数;那么,解决办法会很清楚吗?这归结为一个问题,就是你是否可以像比较整数那样比较这些
datetime
对象;换句话说,它们是完全有序集的成员。这类问题分析对于任何程序员来说都是一项基本技能。你的A和B都有语法错误。非常简洁,但有点难看。如果您有时间,我相信OP和未来的读者会喜欢变量名和indentation=)
zip
用于成对迭代列表B,以便将列表A中的每个元素与列表B中的每对相邻元素进行比较。现在看起来可以了吗?我为给变量命名而挠头,这项艰巨的工作:/@MoinuddinQuadri可能很难给变量命名,因为OP对这类事情的用例很难猜测。