SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
Functional Programming in Python
          (в примерах)




            Артем Дударев
    кофе-и-код, Донецк, январь 2011
Новые подписчики
Форматирование оси
ax = axes([0.15, 0.22, 0.75, 0.75])
yAxis = ax.yaxis
yAxis.set_major_formatter(
    ticker.FuncFormatter(
        lambda x, pos: str(x) if x%2 == 0 else ''
    )
)

код на github
Нет switch
{'option1': function1,
 'option2': function2,
 'option3': function3}[value]()

result = {
  'a': lambda x: x * 5,
  'b': lambda x: x + 7,
  'c': lambda x: x - 2
}[value](x)

обсуждение
еще на stackoverflow.com
Присвоить две переменные из str
coord_str = '48,37'
lat,lon = map(float, coord_str.split(','))
print lat,lon
# 48.0 37.0
",".join(map(str, (lat,lon)))
# '48.0,37.0'
Сортировать один список на основе
другого
def psort4(s1, s2):
    _indices = range(len(s1))
    _indices.sort(key=s2.__getitem__)
    s1[:] = map(s1.__getitem__, _indices)

несколько способов делать это (этот самый
быстрый)
Удаление элементов из списка
a=range(10)
for item in a:
    if item<5:
        a.remove(item)
print a
# Вернет [1, 3, 5, 6, 7, 8, 9]

filter(lambda x: x>=5, a)
[i for i in a if i>=5] # list comprehension
# Вернут [6, 7, 8, 9]
# Список а остался неизменным

из недавней заметки на Хабре
Linkdump
 • Guido van Rossum о происхождении элементов
   ФП в Python
 • Перевод поста на Хабре
 • Python Functional Programming HOWTO

Основная мысль:
lambda, map, filter, reduce вводились как
синтаксический сахар
сейчас чаще употребляются итераторы, генераторы,
list comprehension
Credits
 • картинка слона (блог Thomas Guest)
 • rst2pdf
 • частично использовался стиль от Alexis Métaireau


 • ссылка на github

Weitere ähnliche Inhalte

Was ist angesagt?

Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-CИнтуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
Глеб Тарасов
 
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsИнтуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. Views
Глеб Тарасов
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
Mikhail Kurnosov
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Mikhail Kurnosov
 

Was ist angesagt? (20)

Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-CИнтуит. Разработка приложений для iOS. Лекция 2. Objective-C
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
 
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsИнтуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. Views
 
3.7 Конструктор копирования и оператор присваивания
3.7 Конструктор копирования и оператор присваивания3.7 Конструктор копирования и оператор присваивания
3.7 Конструктор копирования и оператор присваивания
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
 
3.2 Методы
3.2 Методы3.2 Методы
3.2 Методы
 
3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Proizvodnaya i grafiki_funkcii
Proizvodnaya i grafiki_funkciiProizvodnaya i grafiki_funkcii
Proizvodnaya i grafiki_funkcii
 
2.7 Многомерные массивы
2.7 Многомерные массивы2.7 Многомерные массивы
2.7 Многомерные массивы
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
 
2.2 Стек вызовов
2.2 Стек вызовов2.2 Стек вызовов
2.2 Стек вызовов
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
Cтандартные функции
Cтандартные функцииCтандартные функции
Cтандартные функции
 

Andere mochten auch (7)

Trabajo de las fuentes de alimentacion
Trabajo de las fuentes de alimentacionTrabajo de las fuentes de alimentacion
Trabajo de las fuentes de alimentacion
 
Circuitos integrados caderno_hanneli
Circuitos integrados caderno_hanneliCircuitos integrados caderno_hanneli
Circuitos integrados caderno_hanneli
 
Brochure Funglode
Brochure FunglodeBrochure Funglode
Brochure Funglode
 
Cruzando el mar rojo
Cruzando el mar rojoCruzando el mar rojo
Cruzando el mar rojo
 
Sistema eitp tonala.Sonsonate
Sistema eitp tonala.SonsonateSistema eitp tonala.Sonsonate
Sistema eitp tonala.Sonsonate
 
Evaluation3
Evaluation3Evaluation3
Evaluation3
 
Aula 7 variáveis aleatórias
Aula 7   variáveis aleatóriasAula 7   variáveis aleatórias
Aula 7 variáveis aleatórias
 

Ähnlich wie Functional Programming in Python

Stream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовStream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководов
tvaleev
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетов
Транслируем.бел
 
Автоматизированная разработка генераторов тестовых программ для микропроцессо...
Автоматизированная разработка генераторов тестовых программ для микропроцессо...Автоматизированная разработка генераторов тестовых программ для микропроцессо...
Автоматизированная разработка генераторов тестовых программ для микропроцессо...
CEE-SEC(R)
 
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Ontico
 

Ähnlich wie Functional Programming in Python (20)

8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)
 
Charming python sc2-8
Charming python sc2-8Charming python sc2-8
Charming python sc2-8
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
Scala on android
Scala on androidScala on android
Scala on android
 
Основы Python. Функции
Основы Python. ФункцииОсновы Python. Функции
Основы Python. Функции
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
Stream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовStream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководов
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотек
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетов
 
лекция 3
лекция 3лекция 3
лекция 3
 
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
 
Метапрограммирование за гранью приличия
Метапрограммирование за гранью приличияМетапрограммирование за гранью приличия
Метапрограммирование за гранью приличия
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
 
Автоматизированная разработка генераторов тестовых программ для микропроцессо...
Автоматизированная разработка генераторов тестовых программ для микропроцессо...Автоматизированная разработка генераторов тестовых программ для микропроцессо...
Автоматизированная разработка генераторов тестовых программ для микропроцессо...
 
Scala for android
Scala for androidScala for android
Scala for android
 
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 

Mehr von dudarev (9)

Django with Mongo using Mongoengine
Django with Mongo using MongoengineDjango with Mongo using Mongoengine
Django with Mongo using Mongoengine
 
Ololog
OlologOlolog
Ololog
 
Refactor Yourself with Balalaika
Refactor Yourself with BalalaikaRefactor Yourself with Balalaika
Refactor Yourself with Balalaika
 
Who are we?
Who are we?Who are we?
Who are we?
 
CL metaprogramming
CL metaprogrammingCL metaprogramming
CL metaprogramming
 
GeoTree - библиотека для гео-данных в Google App Engine
GeoTree - библиотека для гео-данных в Google App Engine GeoTree - библиотека для гео-данных в Google App Engine
GeoTree - библиотека для гео-данных в Google App Engine
 
Mobile applications with HTML and Javascript
Mobile applications with HTML and JavascriptMobile applications with HTML and Javascript
Mobile applications with HTML and Javascript
 
Favorite android apps
Favorite android appsFavorite android apps
Favorite android apps
 
Donetsk Twitter
Donetsk TwitterDonetsk Twitter
Donetsk Twitter
 

Functional Programming in Python

  • 1. Functional Programming in Python (в примерах) Артем Дударев кофе-и-код, Донецк, январь 2011
  • 3. Форматирование оси ax = axes([0.15, 0.22, 0.75, 0.75]) yAxis = ax.yaxis yAxis.set_major_formatter( ticker.FuncFormatter( lambda x, pos: str(x) if x%2 == 0 else '' ) ) код на github
  • 4. Нет switch {'option1': function1, 'option2': function2, 'option3': function3}[value]() result = { 'a': lambda x: x * 5, 'b': lambda x: x + 7, 'c': lambda x: x - 2 }[value](x) обсуждение еще на stackoverflow.com
  • 5. Присвоить две переменные из str coord_str = '48,37' lat,lon = map(float, coord_str.split(',')) print lat,lon # 48.0 37.0 ",".join(map(str, (lat,lon))) # '48.0,37.0'
  • 6. Сортировать один список на основе другого def psort4(s1, s2): _indices = range(len(s1)) _indices.sort(key=s2.__getitem__) s1[:] = map(s1.__getitem__, _indices) несколько способов делать это (этот самый быстрый)
  • 7. Удаление элементов из списка a=range(10) for item in a: if item<5: a.remove(item) print a # Вернет [1, 3, 5, 6, 7, 8, 9] filter(lambda x: x>=5, a) [i for i in a if i>=5] # list comprehension # Вернут [6, 7, 8, 9] # Список а остался неизменным из недавней заметки на Хабре
  • 8. Linkdump • Guido van Rossum о происхождении элементов ФП в Python • Перевод поста на Хабре • Python Functional Programming HOWTO Основная мысль: lambda, map, filter, reduce вводились как синтаксический сахар сейчас чаще употребляются итераторы, генераторы, list comprehension
  • 9. Credits • картинка слона (блог Thomas Guest) • rst2pdf • частично использовался стиль от Alexis Métaireau • ссылка на github