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
Что выведет код?
Anonymous Quiz
24%
True
60%
False
7%
None
10%
Error
#1
Генератор списка

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

Самым простым способом создания списка является обычное присваивание ему необходимых значений или объектов. В том случае, когда элементов последовательности немного, их можно просто перечислить один за другим. Но если их количество переваливает за десяток, следует всерьез задуматься об использовании генератора списка. Данная конструкция обеспечивает его автоматическое заполнение, исходя из определенных инструкций.

Следующий пример демонстрирует создание в Python списка чисел при помощи генератора. Переменная i является ссылкой на текущий элемент объекта data. Функция range здесь принимает два аргумента, которые устанавливают границы для сгенерированной последовательности целых чисел. Вывод информации на экран происходит через метод print.
#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().