0

tryステートメントまたはその他のメソッドを使用して、リスト内の指定された変数の後に最も近いアイテムを見つけたいと思います。次のコードがあります。この例では、リストpjの最初の日時オブジェクトが見つかるまでコードがd1に1日追加し続け、対応するリスト要素のインデックスを返すようにします。したがって、ここで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
4

1 に答える 1

1

良さはありません。

>>> bisect.bisect_left(pj, d1)
1
>>> pj[bisect.bisect_left(pj, d1)]
datetime.datetime(1922, 1, 6, 0, 0)
于 2012-11-04T04:26:32.443 に答える