2433
Комментарий:
|
3656
|
Удаления помечены так. | Добавления помечены так. |
Строка 23: | Строка 23: |
1. Решить [[../2012-04-18#letter|«задачу про письмо»]] * хоть как-нибудь, но быстро * в две строки (опять пригодится `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]` в первых скобках — ''функция'', которая применяется к выражению во вторых скобках |
Элементы функционального программирования
Выражения-конструкторы списков ([… for …]) и генераторов ((… for …))
Функции map() и filter()
Функция reduce()
Цикл как map() на списке
- Лямбда-функции
Домашнее задание
Прочитать в учебнике про Лямбда-функции и инструменты фунционального программирования.
Решить «задачу про матанализ»
- в три строчки
- подсказка: первоначальное присваивание можно сделать одной строкой
- в две строчки
подсказка: чтобы присвоить элементу списка некоторое значение (например, в теле лямбда-функции) можно вместо P[i]=k использовать P.__setitem__(i,k)
грубая подсказка: __setitem__ возвращает None
- в одну строку вообще без присваиваний (теперь это уж дело совсем простое)
- в три строчки
Решить «задачу про письмо»
- хоть как-нибудь, но быстро
в две строки (опять пригодится 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] в первых скобках — функция, которая применяется к выражению во вторых скобках
Условные обозначения
— тема по Linux
— необязательная тема
— теоретическое задание
— тема для самостоятельного изучения