2017-05-13 5 views
0

の要素に同じ関数を適用するための最速の方法は何が私はこのリストのPython - リスト

l = ['2017-05-13 00:00:00', '2017-05-12 00:00:00', '2017-05-11 00:00:00'] 

を持っていると私は、各要素00:00:00部分のために削除します。 elm = elm.split(" ")[0]

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

答えて

0

、以下のいくつかの例は以下のとおりです。

ケース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 

ケース1:lambdamap()

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 

ケース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

を感謝し、非常に関連します –

1

よりもこれを行うには、より高速な方法は、あなたがそれに分割さ部品を追加するために、空のリストを持っている必要がありますが、おそらくあなたが追記部分を省略あります。

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

しかし、より最適化されたアプローチは、リストの内包表記を使用している:最速の方法はlist comprehensionを使用している

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

あなたdatatime文字列が固定サイズを持っている場合は、あなたが直接文字列をスライスできます。

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