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
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