Модули-расширения языка
Долги по прошлой лекции:
Что есть полезного в __builtins__
В частности, getattr(), setattr() и hasattr()
Итераторы с явным индексом ограничены sys.maxint (i586: 2147483647)
Разбор задачи-однострочника:
(DiffLet) Количество разных символов
Input:Ввести строку (слова, разделённые пробелами), и вывести через пробел вначале слова, состоящие из повторения единственного символа (если таковые имеются), затем — слова, образованные всего из двух символов в любом количестве и сочетании, затем — из трёх и т. д. Слова с одинаковым количеством символов выводить в порядке их появления в строке.
Output:sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
--> new list sorted key=None, cmp=None, reverse=False) sorted(iterable,
Функциональное программирование
filter(), map(), reduce()
Гвидо и reduce(): в блоге, на слэшдоте
lambda и списковые конструкторы
functools.html: partial()
Итераторы (itertools.html):
Бесконечные (.stop() или другое частичное вычисление)
.i*()-аналоги и некоторые другие манипуляции последовательностями
- Комбинаторика
Надстройки над стандартными структурами данных
deque — быстрая стеко-очередь
defaultdict — словарь со значением по умолчанию
OrderedDict — словарь с постоянным порядком ключей
Counter — словарь для подсчёта всего
Куча (heapq.html): «The interesting property of a heap is that a[0] is always its smallest element»
weakref.html: Слабые ссылки
Разное
inspect.html: анализ кода
«Массивы» и проблемы представления: array.html
Д/З
- Прочитать:
(одним глазом) functions.html — список стандартных функций
Про функциональное программирование в учебнике
Мнение Гвидо по ссылкам выше
Документацию по functools.html и itertools.html
Документацию по collections.html и heapq.html
Про модули и пакеты в учебнике (modules.html)
(KdigNbase) K-значные N-ричные
Input:Ввести через запятую K и N (1<N<17), вывести в столбик все K-значные N-ричные числа в порядке возрастания (латинские буквы для цифр — большие, незначащие нули или пробелы не считаются).
Output:2,4
10 11 12 13 20 21 22 23 30 31 32 33
(ParamForm) Параметрическая формула
Input:Первая строка содержит Python-совместимую формулу, в которой могут присутствовать названия переменных и элементы модуля math. В следующей строке через пробел в виде переменная=значение или переменная=начало_диапазона,конец_диапазона указаны допустимые целочисленные значения переменных (целочисленный диапазон включает и начальное, и конечное значения). Вывести наибольшее значение формулы на всех допустимых целочисленных значениях переменных.
Output:Param**2+Fun/6-Result+1 Param=3 Fun=-21,45 Result=5,15
12
- Input:
Ввести строку (слова через пробел), вывести её таким образом, что все вхождения слов, кроме первого, опущены. В случае, если слово встречалось в исходной строке более одного раза, после слова в скобках без пробела следует номер — позиция последнего вхождения.
Output:qwe sdf tyu qwe sdf try sdf qwe sdf rty sdf wer sdf wer
qwe(7) sdf(12) tyu try rty wer(13)
(ByteReverse) Байты задом наперёд
Input:Ввести через запятую строку чисел типа «4-байтовое знаковое целое», переставить байты в занимаемой ими совместно памяти в обратном порядке, вывести в виде списка объектов типа «4-байтовое знаковое целое». Обратите внимание на то, что и «int», и «long int» на разных архитектурах имеют разную длину.
Output:-12,4,-345345345,12345
[959447040, -1083020565, 67108864, -184549377]
