所以我有这个清单:
snapshots = ['2014-04-05',
'2014-04-06',
'2014-04-07',
'2014-04-08',
'2014-04-09']
我想使用列表理解找到最早的日期。
这是我现在所拥有的,
earliest_date = snapshots[0]
earliest_date = [earliest_date for snapshot in snapshots if earliest_date > snapshot]
当我打印最早的日期时,我希望返回一个空数组,因为列表的第一个元素之后的所有值都已经大于第一个元素,但我想要一个值。
这是原始代码,表示我知道如何找到最小日期值:
for snapshot in snapshots:
if earliest_date > snapshot:
earliest_date = snapshot
任何人都有任何想法?
答案 0 :(得分:14)
只需使用min()
或max()
查找最早或最晚的日期:
earliest_date = min(snapshots)
lastest_date = max(snapshots)
当然,如果您的日期列表已经排序,请使用:
earliest_date = snapshots[0]
lastest_date = snapshots[-1]
演示:
>>> snapshots = ['2014-04-05',
... '2014-04-06',
... '2014-04-07',
... '2014-04-08',
... '2014-04-09']
>>> min(snapshots)
'2014-04-05'
一般来说,列表推导只应用于构建列表,而不是用作通用循环工具。那是for
循环的真正含义。
答案 1 :(得分:1)
>>> snapshots = ['2014-04-05',
'2014-04-06',
'2014-04-07',
'2014-04-08',
'2014-04-09']
>>> min(snapshots)
2014-04-05
您可以使用min
功能。
但是,这假定您的日期格式为YYYY-MM-DD,因为您的列表中有字符串。