【问题标题】:Format comma seperated list of dates in python在python中格式化逗号分隔的日期列表
【发布时间】:2012-01-04 05:35:40
【问题描述】:

我有一个日期列表(日期时间):

>>> print str(range)
[datetime.datetime(2011, 12, 15, 0, 0), datetime.datetime(2011, 12, 16, 0, 0), datetime.datetime(2011, 12, 17, 0, 0)]

我想将它们格式化为“%d/%m/%Y”并用逗号分隔它们,即:

15/12/2011、16/12/2011、17/12/2011

目前我正在使用 map 在每个日期运行 strftime,如下所示:

>>> string = ", ".join(map(lambda x: x.strftime("%d/%m/%Y"), range))
>>> print string

哪个输出:

15/12/2011、16/12/2011、17/12/2011

哒哒!

这不是最容易阅读的,但它确实有效。它有效率吗?它是pythonic吗? (这有关系吗?)

【问题讨论】:

    标签: python list datetime date map


    【解决方案1】:

    map() 被视为已弃用(尽管有些人会反对)。

    ", ".join(x.strftime("%d/%m/%Y") for x in daterange)
    

    【讨论】:

    • 为什么“map() 被认为已弃用”?你能提供一个来源吗?
    • 我将在这一点上另辟蹊径,因为map() 仍然存在于 Python 3.2 中,没有弃用通知。不过,我同意“map-with-lambda”模式最好用理解或生成器来实现。
    • @Greg:但它不再是相同的map()
    • 这是一个很好的观点,因为任何一个都可以在 OP 的代码中同样有效地工作。
    • 这不是列表推导,而是生成器表达式。它将生成列表的初始成本换成生成每个元素的每次访问成本。
    【解决方案2】:

    为什么不使用列表表达式?

    ",".join([ date.strftime("%d/%m/%Y") for date in range])
    

    是的,不推荐使用map,这是在官方文档中,因为列表表达式得到了更好的优化。

    【讨论】:

    • 我正在查看的页面上没有说已弃用 here。你能告诉我你认为哪些地方被弃用了吗?
    • 好的,我认为“弃用”可能有点过分,抱歉,“不鼓励”更适合性能问题。我猜它来自link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多