2017-02-03 2 views
0

Zum Beispiel, wenn ich eine Liste wie: [datetime.datetime(2016,5,1), datetime.datetime(2015,2,5)]
habe und ich möchte 2015 Einträge aus dieser Liste herausgefiltert.Wie filtert man die Zeilen eines bestimmten Jahres aus einer Liste von datetime.datetime-Objekten?

Betrachten Sie diese Liste besteht aus vielen Einträgen für das Beispiel Ich habe nur zwei Einträge.

+0

Mögliches Duplikat [Wie ich eine Python-Liste filtere Daten gemäß dem angegebenen Startdatum und Enddatum enthält?] (Http://stackoverflow.com/questions/31375873/how-do-i-filter -a-python-list-contained-dates-nach-dem-gegebenen-Startdatum –

Antwort

0

Sie filtern können mit

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

filtered_list gefilterte Liste erhalten ist:

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

einfach das year Attribut überprüfen:

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

Wenn Sie eine sehr lange Liste von Daten haben Überspringen der unerwünschten könnte iterativ mit dem eingebautenerfolgenFunktion in Python 3 oder die in Python 2.

In beiden Fällen wird vermieden, eine zweite - möglicherweise auch sehr lange - Liste zu erstellen.

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