2012-01-04 49 views
0

日期的名单我有日期(日期时间)的列表:格式逗号分隔的python

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

在我使用的地图上每个strftime的运行时刻像这样的日期:

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

,输出:

15/12/2011,16/12/2011,17/12/2011

钽DAH!

这不是最简单的阅读,但它的工作原理。它有效吗?它是pythonic吗? (那有什么关系?)

回答

2

map()被认为已被弃用(尽管有些人会否认)。

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

为什么“_'map()'被认为是deprecated_”?你能提供一个源代码吗? – Tadeck 2012-01-04 05:39:38

+0

我会在这一点上争论,只是因为'map()'仍然存在于Python 3.2中,没有弃用通知。不过,我同意“地图 - 拉姆达”模式更好地通过理解或生成器来实现。 – 2012-01-04 05:40:26

+2

http://www.artima.com/weblogs/viewpost.jsp?thread=98196 – 2012-01-04 05:40:51

0

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

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

是的,映射已被弃用,这是在官方文档,因为列表表达式更好地优化。

+0

它不会在我正在查看的页面[这里](http://docs.python.org/library/functions.html#map)中弃用。你能告诉我你不赞成的地方吗? – 2012-01-04 06:30:57

+0

好的,我认为“弃用”可能有点太多了,对此抱歉,“不鼓励”对性能问题更好。我想它是从[link](http://bytes.com/topic/python/answers/26234-filter-map-deprecated) – user694163 2012-01-04 07:48:45