#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))
вы начнете видеть разницу.