Cryo
asilyator
map и list comprehension - это все функциональное программирование, т.е. особого противоречия нет.
Не знал, что конструкция генераторов списков относится к функциональному программированию. Учту. Но map ведь применяет функцию ко всем элементам последовательности, а list comprehension применяет выражение к итерируемой последовательности. Мне кажется вариант с list comprehension более лучшим..
В принципе, без list comprehension вполне можно обойтись
s=[1,2,3,4,5,6,7,8]
map(lambda x:x+12, filter(lambda x: not x%2,s))
[x+12 for x in s if not x%2]
Как то тут меряли скорость выполнения мапов и списковых выражений, получилось примерно одинаково.
Так что тут вопрос только в читаемости кода.
Но самая мякотка начинается, когда эти два механизма мы комбинируем
[x+12 for x in map(lambda i: (i+1)**2, s) if not x%3 and not (x-5)%2]