Python日期数组

2024-04-26 12:52:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下3个数组。你知道吗

years=[2011,2012,2012]
monthes=[01,02,03]
days=[10,20,30]

有没有一种方法可以将它们转换成日期数组而不使用循环,这意味着可以将整数数组组合成日期数组的方法/库?你知道吗

dates = [2011/01/10,2012/02/20,2013/03/30]

Tags: 方法整数数组daysdatesyearsmonthes
3条回答

试试这个:

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]))

我在这里留下了一个复制粘贴和编辑错误供您调试,以确切地说明为什么“不要重复自己”是编程的基本原则,因此为什么“没有循环”是一个愚蠢的要求。你知道吗


或者,您可以随时将任何循环转换为递归调用,但是(a)在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)
map(lambda t: "/".join(map(str, t)), zip(years, monthes, days))

相关问题 更多 >