![](/img/trans.png)
[英]what is the fastest way to exclude the elements of a list from another lis in python?
[英]Python - What is the fastest way to apply the same function to elements of a list
我有這個清單
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]
您應該有一個空列表,以便將拆分后的部分添加到該列表中,但是可能您省略了添加部分。
new = []
for elm in l:
elm = elm.split(" ")[0]
new.append(elm)
但是,更優化的方法是使用列表理解:
In [16]: [i.split()[0] for i in l]
Out[16]: ['2017-05-13', '2017-05-12', '2017-05-11']
最快的方法是使用list comprehension
,以下是一些情況:
情況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:使用lambda
和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
情況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
當您的數據時間字符串具有固定大小時,您可以直接對字符串進行切片:
>>> 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']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.