Элементы функционального программирования
Выражения-конструкторы списков ([… for …]) и генераторов ((… for …))
Функции map() и filter()
Функция reduce()
Цикл как map() на списке
- Лямбда-функции
Домашнее задание
Прочитать в учебнике про Лямбда-функции и инструменты фунционального программирования.
Решить «задачу про матанализ»
- (Написать генератор входных данных)
- в три строчки
- подсказка: первоначальное присваивание можно сделать одной строкой
- в две строчки
подсказка: чтобы присвоить элементу списка некоторое значение (например, в теле лямбда-функции) можно вместо P[i]=k использовать P.__setitem__(i,k)
грубая подсказка: __setitem__ возвращает None
- в одну строку вообще без присваиваний (теперь это уж дело совсем простое)
Решение: Matan.py
Решить «задачу про письмо»
- (Написать генератор входных данных)
- хоть как-нибудь, но быстро
в две строки (опять пригодится reduce())
подсказка: возможно, станет проще, если введённую строку превратить в список True и False, например, так: map(str.isupper,raw_input())
- в одну строку
подсказка: если некоторый объект S по ходу вычислений нужен несколько раз (например, в виде S, [S.count(True), S.count(True), 0]), а сам этот обект — функция, вычисление которой нельзя повторить (например, raw_input()), помогает применение (labmda S: S, [S.count(True), S.count(True), 0])(raw_input()). Обратите внимание на то, что результат выражения labmda S: S, [S.count(True), S.count(True), 0] в первых скобках — функция, которая применяется к выражению во вторых скобках
Решение: NOCamelCase.py
Условные обозначения
— тема по Linux
— необязательная тема
— теоретическое задание
— тема для самостоятельного изучения