2017-02-03 23 views
0

例如,如果我有一個像這樣的列表:[datetime.datetime(2016,5,1), datetime.datetime(2015,2,5)]
並且我希望從該列表中濾除2015條目。如何從datetime.datetime對象列表中篩選特定年份的行?

考慮這個列表包含很多條目,例如我只輸入了兩個條目。

+0

的[我如何篩選根據給定的開始日期和結束日期包含日期的Python列表?(可能的複製http://stackoverflow.com/questions/31375873/how-do-i-filter -a-蟒蛇一覽含日期,根據到該賦予的啓動至今) –

回答

0

可以過濾與

lst=[datetime.datetime(2016,5,1),datetime.datetime(2015,2,5)] 
filtered_list = [date for date in lst if date.year == 2015] 

filtered_list得到過濾列表爲:

[datetime.datetime(2015, 2, 5, 0, 0)] 
0

只需檢查year屬性:

>>> some_dates = [datetime.datetime(2016,5,1), datetime.datetime(2015,2,5)] 
>>> [x for x in some_dates if x.year != 2015] 
[datetime.datetime(2016, 5, 1)] 
0

如果你有一個很長的日期列表,跳過不想要的可以使用內置的迭代地完成Python 3中的函數或Python 2中的。

無論是哪種情況,都可以避免創建第二個可能也很長的列表。

import datetime 
try: 
    from itertools import ifilter 
except ImportError: # Python 3 
    ifilter = filter 

dates = [datetime.datetime(2016,5,1), datetime.datetime(2015,2,5)] 

for date in ifilter(lambda d: d.year != 2015, dates): 
    # do something with non-2015 date... 
    print(date) # -> 2016-05-01 00:00:00 
相關問題