我對python很陌生,所以我需要一些幫助。下面的代碼完成了作業,但我覺得這不是完成此任務的最有效方法,任何輸入都將不勝感激。
目標:1) 傳遞字串開始和結束日期 2) 創建一個串列,以便能夠將請求分塊到 API。每個結束日期都需要比開始日期晚 4 小時 3) 串列中的每個后續開始日期都需要比上一個開始日期晚 3 小時 4) 當最終開始日期 >= 結束日期時結束串列
重要的是,最終數字必須顯示為“2018-06-05T09 2018-06-05T13”,否則我的 API 請求將不起作用
謝謝大家!
from datetime import datetime, timedelta
import numpy as np
start='2018-06-05T00'
end='2020-11-01T23'
start_date = datetime.strptime(start, '%Y-%m-%dT%H')
end_date = datetime.strptime(end, '%Y-%m-%dT%H')
delta = timedelta(hours=3)
end_date_initial = start_date timedelta(hours=4)
start_date_list = [start_date]
end_date_list = [end_date_initial]
while True:
start_date = delta
start_date_list.append(start_date)
if start_date >= end_date:
break
while True:
end_date_initial = delta
end_date_list.append(end_date_initial)
if end_date_initial >= end_date:
break
start_date_array = np.array(start_date_list)
end_date_array = np.array(end_date_list)
formated_start_date = []
formated_end_date = []
for i in range(len(start_date_array)):
formated_start_date.append(start_date_array[i].strftime('%Y-%m-%dT%H'))
for i in range(len(end_date_array)):
formated_end_date.append(end_date_array[i].strftime('%Y-%m-%dT%H'))
# print(start_date_array[0], end_date_array[0])
# print(formated_start_date[0], formated_end_date[0])
time = formated_start_date[0] ' ' formated_end_date[0]
def listOfTuples(i, j):
return list(map(lambda x, y:(x ' ' y), i, j))
time_tuples = listOfTuples(formated_start_date, formated_end_date)
print(time_tuples[3])
uj5u.com熱心網友回復:
如果我理解正確,您可以很容易地做到這一點,并且仍然可以利用 numpy 的矢量化和廣播功能:
import numpy as np
ti, tf = np.datetime64("2018-06-05T00"), np.datetime64("2020-11-01T23")
start = np.arange(ti, tf, np.timedelta64(3, "h"))
end = start np.timedelta64(4, "h")
api_times = [" ".join(map(str, t)) for t in zip(start, end)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/351664.html
