2017-05-13 2 views

Antwort

0

Die schnellste Methode list comprehension verwendet, sind unten einige Fälle:

Fall 0:

l = ['2017-05-13 00:00:00', '2017-05-12 00:00:00', '2017-05-11 00:00:00'] 
start0 = time.time() 
output = [] 
for data in l: 
    data = data.split(" ")[0] 
    output.append(data) 
print(output) 
print(time.time()-start0) 
['2017-05-13', '2017-05-12', '2017-05-11'] 
5.602836608886719e-05 

Fall 1: Mit lambda und map():

l = ['2017-05-13 00:00:00', '2017-05-12 00:00:00', '2017-05-11 00:00:00'] 
start1 = time.time() 
print(list(map(lambda x:x.split(" ")[0],l))) 
print(time.time()-start1) 
['2017-05-13', '2017-05-12', '2017-05-11'] 
3.504753112792969e-05 

Fall 2: list comprehension

l = ['2017-05-13 00:00:00', '2017-05-12 00:00:00', '2017-05-11 00:00:00'] 
start2 = time.time() 
print([i.split()[0] for i in l]) 
print(time.time()-start2) 
['2017-05-13', '2017-05-12', '2017-05-11'] 
0.00010156631469726562 
+0

Dank sehr relevant –

1

Sie sollten eine leere Liste haben, um die gespaltet Teile es zu anhängen, aber wahrscheinlich weggelassen Sie den Append Teil.

new = [] 
for elm in l: 
    elm = elm.split(" ")[0] 
    new.append(elm) 

Aber die optimierteren Ansatz wird mit einer Liste Verständnis:

In [16]: [i.split()[0] for i in l] 
Out[16]: ['2017-05-13', '2017-05-12', '2017-05-11'] 
0

Wenn Ihre Datatime Strings eine feste Größe haben, könnten Sie die Saiten direkt schneiden:

>>> l = ['2017-05-13 00:00:00', '2017-05-12 00:00:00', '2017-05-11 00:00:00'] 
>>> [i[:10] for i in l] 
['2017-05-13', '2017-05-12', '2017-05-11'] 
Verwandte Themen