我有以下3個數組。Python日期陣列
years=[2011,2012,2012]
monthes=[01,02,03]
days=[10,20,30]
有沒有辦法將其轉成日期的陣列,而不使用循環,這意味着一個方法/庫,可以整數陣列組合成陣列日期?
dates = [2011/01/10,2012/02/20,2013/03/30]
我有以下3個數組。Python日期陣列
years=[2011,2012,2012]
monthes=[01,02,03]
days=[10,20,30]
有沒有辦法將其轉成日期的陣列,而不使用循環,這意味着一個方法/庫,可以整數陣列組合成陣列日期?
dates = [2011/01/10,2012/02/20,2013/03/30]
map(lambda t: "/".join(map(str, t)), zip(years, monthes, days))
試試這個:
dates = ['/'.join(map(str,x)) for x in zip(years,months,days)]
例子:
>>> years=[2011,2012,2012]
>>> months=['01','02','03']
>>> days=[10,20,30]
>>> ['/'.join(map(str,x)) for x in zip(years,months,days)]
['2011/01/10', '2012/02/20', '2012/03/30']
如果你不希望任何循環,你必須手動 「展開」 的事情。這幾乎總是做一件很無聊的事情,這種情況下也不例外,但每當你知道的東西長度靜態,這是可以做到:
dates = []
dates.append('{}/{:02}/{:02}'.format(years[0], monthes[0], days[0]))
dates.append('{}/{:02}/{:02}'.format(years[1], monthes[0], days[1]))
dates.append('{}/{:02}/{:02}'.format(years[2], monthes[2], days[2]))
我留下了複製粘貼和 - 編輯錯誤在那裏供您調試,以此作爲「不重複自己」的一個示例,它是編程中的一個基本原則,因此「沒有循環」是一個愚蠢的要求。
或者,你可以隨時將任何環成一個遞歸調用,但(一)這是一個很無聊的事在Python做的,和(b)大多數計算機科學家可能會說這仍然是一個循環。但是,如果你真的想:
def format_dates(years, monthes, days):
if not years:
return []
return (['{}/{:02}/{:02}'.format(years[0], monthes[0], days[0])] +
format_dates(years[1:], monthes[1:], days[1:]))
dates = format_dates(years, monthes, days)
-1荒謬的限制 – wim 2014-09-29 21:43:35
@isedev:在Python 3.x中,這是一個'SyntaxError',但是在2.x中,它是完全有效;他只是用八進制來指定數字'1','2'和'3',沒有什麼理由。然後再次,_last_行顯然是無效的... – abarnert 2014-09-29 21:55:20
@abanert有效點(我使用3.x)。 – isedev 2014-09-29 21:57:26