Нет никакой разницы, но питонский способ - полностью исключить лямбду:
[y + 1 for y in range(4)]
Обратите внимание, что если ваша функция отображения является «встроенной» (написанной на C),вместо функции python или лямбды map
будет быстрее.
Другой питонический, но необычный способ (исключает ненужную лямбду) будет:
map(1 .__add__, range(4)) # thanks to SvenMarnach for this
Обычно это предпочтительнееизбегать лямбда-выражений в формах отображения, потому что понимание списка всегда будет более эффективным и более ясным.Напротив, использование многострочных функций совершенно приемлемо - нет возможности записать их в строку, и даже если бы вы могли, это было бы менее очевидно.
Другое отличие состоит в том, что map
может приниматьмножественные последовательности для сопоставления и передачи их в качестве позиционных параметров в функцию отображения, можно избежать архивирования, которое потребуется для понимания списка:
[x+y for x,y in zip(range(4), range(2,6))]
#vs
from operator import add
map(add, range(4), range(2,6))