Элементы функционального программирования
Выражения-конструкторы списков ([? 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
?? необязательная тема
? теоретическое задание
? тема для самостоятельного изучения