почему время выполнения равно 0 при использовании map в python

#python #dictionary

#питон #словарь

Вопрос:

когда я использую функцию map, время выполнения равно 0. но когда я выполняю ту же операцию с помощью FOR, она отображает время, затраченное на запуск скрипта.

 def forthpower(n):   return n*n*n*n  t2 = time.time() xx = map(forthpower, range(10000000)) print("The process took {:1.10f}".format(time.time()-t2))  

результат: Процесс занял 0,0000000000

 def forthpower(n):   return n*n*n*n  t2 = time.time() xx = [] for x in range(10000000):  xx.append(forthpower(x))  print("The process took {:1.10f}".format(time.time()-t2))  

результат: Процесс занял 10.5718030930

Комментарии:

1. map() является итератором, он обрабатывает данные только по запросу. Вы не повторяете, если или берете какой — либо элемент из него.

2. @КлаусД. ммм, не могли бы вы сердечно объяснить это немного подробнее? что вы подразумеваете под «взять из него любой предмет»?

3. map еще ничего не сделал. Он просто возвращает итератор . Если и когда вы повторите это (например for..in ), каждый элемент будет обработан, если и когда это необходимо.

4. @deceze о, теперь я понял. это полностью имеет смысл, потому что, когда я добавляю «print(len(список(xx)))», время выполнения не равно нулю. большое тебе спасибо

Ответ №1:

Как сказал Клаус Д., map() является итератором, он будет обрабатывать данные только по запросу.

Если вы добавите:

 print(list(xx))  

вы начнете видеть разницу.