Пишем чистый код на Python с PIPES

map и filter — два эффективных метода Python для работы с итерируемыми объектами, однако код может выглядеть беспорядочно, если вы одновременно используетеи и то и то.

Было бы неплохо, если бы вы могли использовать PIPES | для применения нескольких методов к итерируемому объекту, как показано ниже?

Библиотека Pipe позволяет сделать именно это.
Что такое Pipe?
 
Pipe — это библиотека Python, которая позволяет использовать каналы в Python.Pipe (|) то есть передавать результаты одного метода другому методу.

Мне нравится Pipe, потому что он делает код чище при применении нескольких методов к итерируемому объекту Python. Поскольку Pipe предоставляет только несколько методов, его также очень легко изучить. В этой статье я покажу вам некоторые методы, которые я нашел наиболее полезными.

Чтобы установить Pipe, введите:
pip install pipe
используем WHERE — элементы фильтра в итерируемом объекте
 
 
Как и в SQL, метод where в Pipe также можно использовать для фильтрации элементов в итерируемом объекте.
Select 
 
 
Метод select аналогичен методу map, он применяет метод к каждому элементу итерируемого объекта.

В приведенном ниже коде я использую select для умножения каждого элемента в списке на 2.
Вы можете задаться вопросом: зачем нам нужны методы where и select, если они имеют те же функции, что и map и filter?

Это связано с тем, что вы можете вставлять один метод за другим с помощью конвейеров, что позволяет удалить вложенные круглые скобки и сделать код более читабельным.
chain
Работать с вложенными итерируемыми объектами может быть сложно, но, к счастью, вы можете использовать chain, чтобы связать последовательность итерируемых объектов.
 
Чтобы иметь дело с глубоко вложенным списком, мы можем вместо этого использовать обход всех элементов списка. 

traverse — для  рекурсивного разворот итерации
 

Метод traverse можно использовать для рекурсивного развертывания итерируемых объектов, таким образом, вы можете использовать этот метод для превращения глубоко вложенного списка в обычный список.
Давайте интегрируем этот метод с методом select, чтобы получить значения словаря.

Вполне неплохо)

groupby
 
 
Иногда бывает полезно сгруппировать элементы в списке с помощью определенной функции, это легко сделать с помощью метода groupby.

Чтобы увидеть, как работает этот метод, давайте превратим список чисел в словарь, который группирует числа в зависимости от того, четные они или нечетные.
В приведенном выше коде мы используем groupby для группировки чисел в четную группу и нечетную группу, Результат после применения этого метода выглядит следующим образом:
[('Even', <itertools._grouper at 0x7fbea8030550>),
 ('Odd', <itertools._grouper at 0x7fbea80309a0>)]
Далее мы используем select, чтобы превратить список кортежей в список словарей, чьи ключи — это первые элементы в кортежах, а значения — вторые элементы в кортежах.
Обратите внимание, что в выходных данных больше нет 2 и 1.

dedup — метод, позволяющий убрать повторяющиеся  значения с помощью ключа
Метод dedup удаляет дубликаты в списке.


Это может показаться неинтересным, поскольку метод set может делать то же самое, однако этот метод более гибкий, поскольку позволяет получать уникальные элементы с помощью ключа. Например, вы можете использовать этот метод для получения уникального элемента, который меньше 5, и другого уникального элемента, который больше или равен 5.

Теперь объединим этот метод с select и where чтобы получить значения словаря, у которого есть дублирующиеся ключи и значения None.
В приведенном выше коде мы:
удалили элементы с тем же именем
получили значения счетчика
выбирали только те значения, которые являются целыми числами.
В нескольких строках кода мы можем применить несколько методов к итерируемому объекту, сохраняя при этом чистоту кода.

Ответить