リストがあります:
timestamp_list = ['1377091800', '1377093000', '1377094500', '1377095500']
対象数:
ptime = 1377091810
タイムスタンプのどのペアの間にあるのかを調べたいと思いますptime
。たとえば、この場合、最初のタイムスタンプと 2 番目のタイムスタンプの間にあります。1377091800
したがって、値を目的の出力として返したいと思います。同様に、ptime
だった場合、3 番目と 4 番目のタイムスタンプの間1377091520
にあるため、3 番目のタイムスタンプが返されるように1377091500
します。
私のコード:
timestamp_list = ['1377091800', '1377093000', '1377094500', '1377095500']
ptime = 1377091810
for idx, value in enumerate(timestamp_list):
val = long(value)
if idx!= len(timestamp_list)-1 and ptime >= val and ptime < long(timestamp_list[idx+1]):
target = val
break
elif (idx == len(timestamp_list)-1) and ptime >= val:
target = val
else:
pass
print target
出力:
1377091800
これに対するエレガントな解決策はありますか?私はPythonを始めたばかりなので、Pythonのすべての機能にまだ慣れていません。
どんな助けでも大歓迎です。
編集:
使用したソリューション:
import bisect
timestamp_list = ['1377091800', '1377093000', '1377094500', '1377095500']
ptime = str(1377093110)
if ptime in timestamp_list:
target = ptime
else:
index = bisect.bisect_right(timestamp_list, ptime)-1
target = timestamp_list[index]
print target
出力:
1377093000