Крутой код
У питонистов считается красиво писать короткий код, для которого в языке есть специальные конструкции. Без знания этихпростых конструкции у Вас не получится написать короткий питонистический код. Я попытался на этой странице собрать консрукции языка,
которые помогут писать коротко и в питонистическом стиле.
Выражение 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', и в каждый момент загружен только один
элемент списка.