Python - в одну строку

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Итерация next() для генераторов

В большинстве обычных сценариев в программировании мы можем получить доступ к индексу и получить номер позиции, используя счётчик, который будет просто добавляемым значением

Однако вместо этого можно использовать next(). Next берёт итератор, который будет хранить текущую позицию в памяти и перебирать список в фоновом режиме.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Проверка на дубликаты

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

Вместо списков могут быть и кортежи, и словари. В последнем случае проверка будет выполняться только среди ключей словаря.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Преобразование изменяемых данных в неизменяемые

Изменяемые данные (например, словари или списки) — это структуры, к которым могут быть добавлены новые значения.
Неизменяемые данные, в противоположность изменяемым, после создания остаются неизменными. Посмотрите, как можно преобразовать изменяемый тип данных в неизменяемый.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Counter

Ещё один прекрасный модуль из стандартной библиотеки — collections, и я хотел бы познакомить вас с collections.Counter. Используя Counter, легко получить счётчик списка. Это полезно для получения общего количества значений в данных, нулевого счёта данных и просмотра уникальных значений. В counter есть множество функций, которых нет в Pandas Series, что делает его значительно полезнее в определённых ситуациях
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Профилирование — это процесс, который помогает при работе с данными и их обработке.

Пожалуй, одна из самых известных Python-библиотек для этого – Pandas. Данная библиотека является довольно понятной в использовании и благодаря ей можно быстро выполнять анализ данных.

Кроме того, Pandas имеет встроенную функцию .plot() как часть класса DataFrame, что позволяет демонстрировать на графиках обрабатываемые данные.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Подсказки типа

Python — это язык с динамической типизацией. Вам не нужно указывать тип данных при определении переменных, функций, классов и т.д.
Такой прием сокращает время разработки. Однако есть и более страшные вещи, чем ошибка при выполнении, вызванная простой проблемой ввода.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
sh

Python — это отличный скриптовый язык. Иногда использование стандартных библиотек os и subprocess становится настоящей головной болью.
А библиотека sh является отличной альтернативой.
С ней вы сможете вызывать любую программу как обычную функцию — это крайне полезно для автоматизации рабочего процесса и задач, причем все делается в самом Python.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Что такое аннотации типов?

Аннотации типов – это новая возможность, описанная в PEP484, которая позволяет добавлять подсказки о типах переменных. Они используются, чтобы информировать читателя кода, каким должен быть тип переменной.
Это придаёт немного статический вид коду на динамически типизированном Python. Достигается это синтаксисом: <тип> после инициализации / объявления переменной.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Передавайте в функцию сколько угодно элементов — используйте kwargs

Если при разработке программы нужно выполнить несколько похожих действий, то лучшее решение — определить функции для многоразового использования кода. Для этого вызовите функцию с аргументом. Но что делать, если аргументы функции определены, а вам нужно передать больше значений? Для этого можно использовать kwargs — функции для именованных аргументов.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Сделайте «санитарную» обработку входных данных эффективнее

Чем больше размер программы, тем выше шансы пропустить уязвимость в коде. Один из способов обезопасить себя от возможных ошибок — очистка входных данных перед выполнением программы (input sanitization).
В большинстве случаев при таком подходе достаточно поменять регистр символов или использовать регулярные выражения.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Деление с плавающей запятой

При делении целых чисел в Python результат будет целым, даже если на самом деле он был дробным. Чтобы получить корректный ответ, приходится делать что-то подобное:
result = 1.0/2

Но у этой проблемы есть и другое решение
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Упростите использование операторов сравнения

Использовать все операторы сравнения для одного класса может быть довольно сложно, учитывая, что их немало: It, le, gt или ge. Но есть ли более простой способ сделать это? Здесь поможет functools.total.ordering
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
pprint

Стандартная функцияprint в Python знает свое дело. Но попробуйте вывести на печать крупный и вложенный объект, и вас ждет сплошное разочарование.

Вот здесь-то и приходит на помощь модуль pretty-print из стандартной библиотеки. Он выводит сложно-структурированные объекты в удобочитаемом виде.

Настоящий must-have для любого Python-разработчика, имеющего дело с нетривиальными структурами данных.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
При необходимости используйте итератор со срезами

Итератор — это инструмент для поточной обработки данных. Он отвечает за упрощение навигации по элементам: списку, словарю и так далее. Это такой объект-перечислитель, который выдаёт следующий элемент. В основном его используют в цикле for.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,794
Реакции
1,451
Credits
25,448
Комбинации вложенных списков

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