Tôi có một danh sách: sốTìm nếu một số tồn tại giữa một loạt các con số được xác định bởi một danh sách
timestamp_list = ['1377091800', '1377093000', '1377094500', '1377095500']
Target:
ptime = 1377091810
Tôi muốn tìm giữa mà cặp dấu thời gian làm ptime
nằm trong. Ví dụ trong trường hợp này, nó nằm giữa dấu thời gian đầu tiên và thứ hai. Vì vậy, tôi muốn trả lại giá trị 1377091800
làm đầu ra mong muốn. Tương tự, nếu ptime
là 1377091520
, thì tôi muốn trả lại dấu thời gian thứ ba tức là 1377091500
vì nó nằm giữa dấu thời gian thứ ba và thứ tư.
Mã của tôi:
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
Output: 1377091800
tôi muốn biết là có bất kỳ giải pháp thanh lịch này? Kể từ khi tôi chỉ mới bắt đầu với python, tôi chưa quen với tất cả các chức năng trong python.
Mọi trợ giúp đều được đánh giá cao.
EDIT:
GIẢI PHÁP SỬ DỤNG:
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
OUTPUT:
1377093000
là danh sách được sắp xếp dấu thời gian? –
Một cái gì đó như '[x cho x trong tsl nếu x <= ptime] [-1]'? – Hyperboreus
@MartijnPieters có danh sách dấu thời gian được sắp xếp – Geekster