Это отношение к следующим: (В Python кодекс)Когда следует использовать карту вместо цикла For?
for i in object:
doSomething(i)
против
map(doSomething, object)
Как легко понять, и короткий, но есть ли разница в скорости? Теперь, если doSomething имеет возвращаемое значение, нам нужно было проверить, что он будет возвращен как список с карты, а в цикле for мы могли бы либо создать наш собственный список, либо проверить по одному.
for i in object:
returnValue = doSomething(i)
doSomethingWithReturnValue(returnValue)
против
returnValue = map(doSomething, object)
map(doSomethingWithReturnValue, returnValue)
Теперь, я чувствую, что два расходятся немного. Две функции doSomethingWithReturnValue могут отличаться в зависимости от того, проверяете ли они их на ходу, когда мы проходим через цикл или если проверка их всех сразу в конце дает разные результаты. Также кажется, что цикл for всегда будет работать, возможно, медленнее, когда карта будет работать только в определенных сценариях. Конечно, мы могли бы сделать извинения, чтобы сделать любую работу, но все дело в том, чтобы избежать такой работы.
Что я ищу - это сценарий, в котором функция сопоставления по-настоящему светит по сравнению с хорошо выполненным циклом производительности, удобочитаемости, ремонтопригодности или скорости реализации. Если ответ действительно не имеет большого значения, я бы хотел знать, когда на практике люди используют тот или иной, или если он действительно полностью произволен и установлен стандартами кодирования в зависимости от вашего заведения.
Спасибо!
Вы можете использовать функцию list/dictionary/set или генератор вместо карты - зависит от того, что делает doSomething(). –
не пытайтесь настроить performace предварительный. я бы всегда пользовался лучшим читаемым вариантом. время исполнения позже покажет, является ли производительность showstopper проблемой, и вы улучшаете скорость или использование ресурсов. –