我想使用try语句或任何其他方法来查找列表中给定变量之后的最近项:我有以下代码。在这个例子中,我希望代码继续向d1添加一天,直到找到list pj中的第一个datetime对象,然后返回相应列表元素的索引。所以这里d1应该等于datetime.datetime(1922,01,06)和d1_index = 1.范围函数产生列表中的最后一个元素,所以显然我需要改变那个条件,但不确定正确的前进方向是什么, 谢谢你,
凯恩
import datetime
import numpy as np
import dateutil.relativedelta as rd
pj = [datetime.datetime(1921,12,31), datetime.datetime(1922,01,06), datetime.datetime(1922,01,07), datetime.datetime(1922,01,10), datetime.datetime(1922,01,12)]
d1 = datetime.datetime(1922,01,02)
d2 = datetime.datetime(1929,12,31)
for i in range(0,50):
try:
d1_index = pj.index(d1)
except ValueError:
d1 = d1 +rd.relativedelta(days = +i)
continue
break
答案 0 :(得分:1)
善良否。
>>> bisect.bisect_left(pj, d1)
1
>>> pj[bisect.bisect_left(pj, d1)]
datetime.datetime(1922, 1, 6, 0, 0)