Python tricks | Хитрости Питона
5.67K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
#2
Генератор с условием

Один из часто используемых способов генерации списков в Python — с условием. Предыдущий пример демонстрировал довольно тривиальный подход к заполнению списка при помощи генератора. Данные конструкции языка Python позволяют задавать определенные условия для выполнения такой операции. Например, существует задача перенести в список только четные числовые значения из созданной ранее выборки range.

В дело вступает команда if, после которой следует небольшая инструкция, сообщающая о том, что каждый элемент последовательности должен выполнять некоторое условие. В данном случае необходимо возвращать 0 в результате вычисления остатка от целочисленного деления. Как можно увидеть, прошедшие проверку цифры были занесены в список.
Что выведет код?
Anonymous Quiz
3%
[6]
8%
6,9
53%
[6,9]
36%
[9]
#3
Генерация вложенных списков

Иногда у программиста возникает необходимость в использовании списков с более чем одним измерением. К примеру, многомерные наборы данных могут понадобиться в случае работы с математическими матрицами. Для этого в Python можно также применять генераторы, просто помещая цикл для создания одного списка внутрь другого. Ограничениями области действия для вложенного списка станут квадратные скобки, как показано в следующем примере.

Данный код демонстрирует создание двумерной матрицы с размерностью 3×3 при помощи генератора двумерного списка Python. Элементами этой числовой последовательности стали цифровые значения из методов range, как и в предыдущих примерах. Переменные i и j пошагово увеличиваются в циклах на единицу и перемножаются между собой. Функция print служит для визуального отображения сгенерированного набора данных на экран компьютера.
#4
Генератор списка с lambda

Как известно, лямбда-функции в Python представляют собой некую операцию, возвращающую значение. Преимуществом данного механизма является возможность его применения внутри выражения. Это позволяет значительно уменьшить объем набираемого программистом кода, поскольку в таком случае нет необходимости отдельно объявлять новый метод.

Иногда используются в Python lambda-функции в генераторе списков. В следующем примере будет создана новая последовательность чисел, полученных в результате выполнения метода range. Как и раньше, элемент этого набора представляется в виде переменной i, которая пошагово получает новые значения (от 0 до 9) в цикле for. Лямбда-функция принимает в качестве аргумента значение, затем перемножает его само на себя и возвращает обратно в генератор.
#5
Применение itertools

Для выполнения продвинутой генерации списка в языке Python используется подключаемая библиотека под названием itertools. С ее помощью можно создавать наборы значений по определенным правилам.

Методы, которые содержит эта библиотека, позволяют генерировать списки с использованием улучшенных циклов. Например, с ее помощью можно легко создавать комбинации различных значений, как символьных, так и числовых.
Функция filter()

Функция filter() в Python используется для фильтрации элементов итерации. Эта функция возвращает объект фильтра, который является итератором.

Функция будет вызываться для итеративных элементов, и если она вернет True, то они будут частью возвращенного итератора.

Мы также можем передать функцию как None, в этом случае будут соблюдаться стандартные правила проверки истинности, чтобы определить, являются ли повторяющиеся элементы True или False.
Функция ord()

Функция ord() для символа x вернет число, из таблицы символов Unicode представляющее его позицию. Например, ord('a') возвращает целое число 97 и ord('€') вернет 8364.

Функция ord() обратная chr().

Для символа строки 8-бит возвращает значение байта. Если передан символов Unicode и Python собран с UCS2 Unicode, то позиция кода должна находиться в диапазоне от 0 до 65535 включительно, иначе возбуждается исключение TypeError.
Что выведет код?
Anonymous Quiz
23%
7
27%
1
43%
Error
6%
None
Функция chr()

Функция chr() вернет строку, представляющую символ, соответствующий переданному в качестве аргумента целому числу из таблицы символов Unicode. Например, chr(97) возвращает строку a, а chr(8364) возвращает строку €. Функция chr() - обратная функции ord().

Допустимый диапазон аргументов - от 0 до 1114111 (0x10FFFF в базе 16). Будет поднят ValueError, если x за пределами этого диапазона.

Если необходимо преобразовать символ в число из таблицы символов Unicode, то используйте функцию ord().
Что выведет код?
Anonymous Quiz
11%
True
71%
False
8%
None
10%
Error
itertools.takewhile

С
помощью функции takewhile() мы можем фильтровать элементы последовательности до тех пор, пока условие не станет True. Как только он становится True, он останавливает процесс фильтрации.