【问题标题】:Python:Continuing try loop until first item in list is foundPython:继续尝试循环,直到找到列表中的第一项
【发布时间】:2012-10-24 08:07:24
【问题描述】:

我想使用 try 语句或任何其他方法来查找列表中给定变量之后最接近的项目:我有以下代码。在此示例中,我希望代码继续向 d1 添加一天,直到找到列表 pj 中的第一个日期时间对象,然后返回相应列表元素的索引。所以这里 d1 应该等于 datetime.datetime(1922,01,06) 和 d1_index = 1。 range 函数产生列表中的最后一个元素,所以显然我需要改变这个条件,但不确定正确的前进方向是什么, 非常感谢,

凯恩

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

【问题讨论】:

    标签: python exception loops try-catch


    【解决方案1】:

    天哪。

    >>> bisect.bisect_left(pj, d1)
    1
    >>> pj[bisect.bisect_left(pj, d1)]
    datetime.datetime(1922, 1, 6, 0, 0)
    

    【讨论】:

    • 你是一个怪诞的传奇@Ignacio。干杯:)
    • 嘿@Ignacio Vazquez-Abrams。如果我想要前面的索引号/值怎么办??
    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2021-09-21
    相关资源
    最近更新 更多