Модули-расширения языка
Долги по прошлой лекции:
Что есть полезного в __builtins__
В частности, getattr(), setattr() и hasattr()
Итераторы с явным индексом ограничены sys.maxint (i586: 2147483647)
Разбор задачи-однострочника:
(DiffLet) Количество разных символов
Ввести строку (слова, разделённые пробелами), и вывести через пробел вначале слова, состоящие из повторения единственного символа (если таковые имеются), затем — слова, образованные всего из двух символов в любом количестве и сочетании, затем — из трёх и т. д. Слова с одинаковым количеством символов выводить в порядке их появления в строке.
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-ричные
Ввести через запятую K и N (1<N<17), вывести в столбик все K-значные N-ричные числа в порядке возрастания (латинские буквы для цифр — большие, незначащие нули или пробелы не считаются).
2,4
10 11 12 13 20 21 22 23 30 31 32 33
(ParamForm) Параметрическая формула
Первая строка содержит Python-совместимую формулу, в которой могут присутствовать названия переменных и элементы модуля math. В следующей строке через пробел в виде переменная=значение или переменная=начало_диапазона,конец_диапазона указаны допустимые целочисленные значения переменных (целочисленный диапазон включает и начальное, и конечное значения). Вывести наибольшее значение формулы на всех допустимых целочисленных значениях переменных.
Param**2+Fun/6-Result+1 Param=3 Fun=-21,45 Result=5,15
12
Ввести строку (слова через пробел), вывести её таким образом, что все вхождения слов, кроме первого, опущены. В случае, если слово встречалось в исходной строке более одного раза, после слова в скобках без пробела следует номер — позиция последнего вхождения.
qwe sdf tyu qwe sdf try sdf qwe sdf rty sdf wer sdf wer
qwe(7) sdf(12) tyu try rty wer(13)
(ByteReverse) Байты задом наперёд
Ввести через запятую строку чисел типа «4-байтовое знаковое целое», переставить байты в занимаемой ими совместно памяти в обратном порядке, вывести в виде списка объектов типа «4-байтовое знаковое целое». Обратите внимание на то, что и «int», и «long int» на разных архитектурах имеют разную длину.
-12,4,-345345345,12345
[959447040, -1083020565, 67108864, -184549377]