Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 13, 2012 12:34:06

Cryo
Зарегистрирован: 2012-06-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл For

asilyator
map и list comprehension - это все функциональное программирование, т.е. особого противоречия нет.
Не знал, что конструкция генераторов списков относится к функциональному программированию. Учту. Но map ведь применяет функцию ко всем элементам последовательности, а list comprehension применяет выражение к итерируемой последовательности. Мне кажется вариант с list comprehension более лучшим..

Офлайн

#2 Июнь 13, 2012 13:45:05

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Цикл For

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]



Отредактировано FishHook (Июнь 13, 2012 13:46:25)

Офлайн

#3 Июнь 13, 2012 18:21:07

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Цикл For

Cryo, потому что enumerate не для этого, остается непонятная неиспользованная переменная ‘j’.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version