Попробуйте timeit
обоих.
Но второй широко распространен known to be faster.
В основном map
быстрее, чем list comprehension
, который быстрее, чем for loop
.
A вся статья литературы доступна в Интернете по этому вопросу.
EDIT:
Я обещал обновление с реальными, ощутимыми результатами. Вот код.
import random
import timeit
old_list = [ random.randint(0, 100000) for i in range(0, 100) ]
def floop(old_list):
new_list = []
for value in old_list:
new_list.append(value)
return new_list
def lcomp(old_list):
new_list = [ value for value in old_list ]
return new_list
if __name__=='__main__':
results_floop = timeit.Timer('floop(old_list)', "from __main__ import floop, old_list").timeit()
results_lcomp = timeit.Timer('lcomp(old_list)', "from __main__ import lcomp, old_list").timeit()
print("Function\t\tSeconds elapsed")
print("For loop\t\t{}".format(results_floop))
print("List comp\t\t{}".format(results_lcomp))
Помните: timeit
петли через вызываемой функции 1 миллиона раз и выводит время, прошедшее в секундах. Прочитайте его как , чтобы выполнить это 1 миллион раз, потребовалось xx секунд.
Вот результаты. Я думаю, что они говорят сами по себе.
~/python » python3 lists.py
Function Seconds elapsed
For loop 11.089475459069945
List comp 5.985794545034878
Вы можете проверить это самостоятельно, используя модуль ['timeit'] (https://docs.python.org/2/library/timeit.html). – iCodez
У меня есть запрос. Не помещайте пробел между 'new_list' и' .append'. Я не мог найти ничего в руководстве по стилю Python, специально запрещающего его, поэтому просто подумайте, что это личная услуга для меня ;-) – Kevin
@Kevin - услуга предоставлена! – user2242044