Питонистический код

Крутой код

У питонистов считается красиво писать короткий код, для которого в языке есть специальные конструкции. Без знания этихпростых конструкции у Вас не получится написать короткий питонистический код. Я попытался на этой странице собрать консрукции языка, которые помогут писать коротко и в питонистическом стиле.

Выражение if/else

A = Y if X else Z
Эквивалентно следующей классической записи:
if X:
    A = Y
else:
    A = Z

Лямбда-функции или анонимные функции

Синтаксис лямбда-фукции: lambda переменные: выражение
переменные — список аргументов, разделенных запятой. Нельзя использовать ключевые слова. Аргументы не надо заключать в скобки.
выражение — инлайновое выражение Python. Область видимости включает локальные переменные и аргументы. Функция возвращает результат этого выражения.

Лямбда-функция является выражением и может быть использована внутри другого выражения. Лямбда-функции не требуется инструкция return она всегдавозвращает результат выражения.

Пример:
add = lambda a, b: a + b
Эквивалентно:
def add(a, b): 
    return a + b

Генераторы списков

Отображение списка

>>> a_list = [1, 9, 8, 4]
>>> [elem * 2 for elem in a_list]
[2, 18, 16, 8]
Чтобы понять, что здесь происходит, прочитайте генератор справа налево. a_list — отображаемый список. Python последовательно перебирает элементы списка a_list, временно присваивая значение каждого элемента переменной elem. Затем применяет функцию elem * 2 и добавляет результат в возвращаемый список.
Генератор создаёт новый список, не изменяя исходный.
В генераторах списков можно использовать любые выражения Python.

Фильтрация списка

При генерировании списков можно также фильтровать элементы, чтобы отбросить некоторые значения.

Генераторы словарей

Генераторы множеств

Выражения-генераторы

Выражения-генераторы имеют такой же синтаксис, как генераторы списков, но вместо квадратных скобок используются круглые.Выражения-генераторы не загружают в память список целиком, а создают 'generator object', и в каждый момент загружен только один элемент списка.