我有以下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