Различия между версиями 5 и 6
Версия 5 от 2012-04-27 23:36:28
Размер: 3656
Редактор: FrBrGeorge
Комментарий:
Версия 6 от 2012-04-27 23:44:24
Размер: 3800
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 17: Строка 17:
   * (Написать генератор входных данных)
Строка 24: Строка 25:
   * (Написать генератор входных данных)

Элементы функционального программирования

  • Выражения-конструкторы списков ([… for …]) и генераторов ((… for …))

  • Функции map() и filter()

  • Функция reduce()

  • Цикл как map() на списке

  • Лямбда-функции

Домашнее задание

  1. {i} Прочитать в учебнике про Лямбда-функции и инструменты фунционального программирования.

  2. Решить «задачу про матанализ»

    • (Написать генератор входных данных)
    • в три строчки
      • подсказка: первоначальное присваивание можно сделать одной строкой
    • в две строчки
      • подсказка: чтобы присвоить элементу списка некоторое значение (например, в теле лямбда-функции) можно вместо P[i]=k использовать P.__setitem__(i,k)

      • грубая подсказка: __setitem__ возвращает None

    • в одну строку вообще без присваиваний (теперь это уж дело совсем простое)
  3. Решить «задачу про письмо»

    • (Написать генератор входных данных)
    • хоть как-нибудь, но быстро
    • в две строки (опять пригодится 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] в первых скобках — функция, которая применяется к выражению во вторых скобках

Условные обозначения

  • {o} — тема по Linux

  • <!> ­— необязательная тема

  • {i} — теоретическое задание

  • {*} — тема для самостоятельного изучения


CategoryClass CategoryVmsh

LecturesVMSH/2012-04-25 (последним исправлял пользователь FrBrGeorge 2012-05-02 08:59:46)