Kodomo

Пользователь

Bug tracker. Словари, множества

Прошлогодний конспект

План

Упражнения

Напоминаю, что упражнения нужно выполнять в именном репозитории.

  1. Напишите в файл excercises.py функцию unique, которая получает на вход список и возвращает (в произвольном порядке) список уникальных элементов из него. Необходимо, чтобы эта функция работала для списков чисел и строк, работоспособность для других типов данных не требуется.

  2. Напишите в excercises.py функцию frequencies, которая получает на вход строку и возвращает словарь частот букв в ней, например:

    •    1   >>> frequencies('aataaaaatatactt')['a']
         2   0.6
      
  3. Напишите скрипт summary.py, который сжимает таблицу. Т.е. для каждого значения первого столбца выводит строку из него и всех возможных значений второго столбца, встречавшихся с ним. Например, из таблицы:

     a 1
     b 2
     a 3
     b 4
     b 5
    он делает:
     a 1 3
     b 2 4 5

    Мне довольно часто приходилось подобную штуку переизобретать заново. Подобную операцию довольно нетривиально сделать в Excel. Я удивляюсь, почему ничего подобного нет среди базовых утилит UNIX.

    1. Скрипт получает из командной строки имя файла с таблицей из двух столбцов, и печатает на стандартный вывод сжатую таблицу b. Добавьте скрипту возможность выбирать разделитель столбцов, номер входного столбца, по которому собирать данные (в примере a. это будет 1), номер входного столбца, данные которого собираются в строчке (в примере a. это будет 2). c. Приведите скрипт в соответствие традициям UNIX-утилит, как описано в предыдущем задании
  4. Напишите скрипт bestmatch.py, который получает на вход выдачу blast, и находит для каждой искомой последовательности строку с наилучшим %identity (3-й столбец) при условии длины не меньше заданной (4-й столбец – длина); скрипт выдаёт результат в виде таблицы blast с одной строкой-заголовком. Пример выдачи blast, на котором хорошо тренироваться, лежит в /P/SpecialCourses/Python/blast_out.txt