【发布时间】:2011-07-27 16:50:10
【问题描述】:
我如何获得以下列表
[datetime.date(2011, 4, 1), datetime.date(2011, 4, 8), datetime.date(2011, 4, 16), datetime.date(2011, 5, 21)]
作为
['2011-04','2011-05']
它不仅可以转换为字符串,还可以删除重复项
【问题讨论】:
我如何获得以下列表
[datetime.date(2011, 4, 1), datetime.date(2011, 4, 8), datetime.date(2011, 4, 16), datetime.date(2011, 5, 21)]
作为
['2011-04','2011-05']
它不仅可以转换为字符串,还可以删除重复项
【问题讨论】:
使用datetime.date.strftime 将日期转换为字符串。
dates = [date.strftime('%Y-%m') for date in dates]
您可以通过将列表转换为集合然后再转换回列表来删除重复项。
dates = list(set(dates))
然后结合这两种方法一步完成。
dates = list(set([date.strftime('%Y-%m') for date in dates]))
【讨论】:
In [43]: import datetime
In [44]: dates=[datetime.date(2011, 4, 1), datetime.date(2011, 4, 8), datetime.date(2011, 4, 16), datetime.date(2011, 5, 21)]
In [45]: set([date.strftime('%Y-%m') for date in dates])
Out[45]: set(['2011-04', '2011-05'])
【讨论】:
>>> dates = [datetime.date(2011, 4, 1), datetime.date(2011, 4, 8), datetime.date(2011, 4, 16), datetime.date(2011, 5, 21)]
>>> set([date.strftime('%Y-%m') for date in dates])
set(['2011-05', '2011-04'])
set 将列表转换为集合对象,删除重复项。 [date.strftime('%Y-%m') for date in dates] 是一个列表推导式,它使用具有年月模式的 strftime 函数将每个日期转换为字符串。
【讨论】: