Пишем чистый код на 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.
В приведенном выше коде мы: удалили элементы с тем же именем получили значения счетчика выбирали только те значения, которые являются целыми числами. В нескольких строках кода мы можем применить несколько методов к итерируемому объекту, сохраняя при этом чистоту кода.
+1
+1
1
+1
+1
+1