Модули-расширения языка
Долги по прошлой лекции:
- Что есть полезного в __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] 
