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

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Упаковка параметров с помощью urlencode
Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:
url = 'Для просмотра ссылки Войди или Зарегистрируйся{}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)
Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция urlencode из модуля urllib.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
«Сырые» строки и строковые литералы
Оперировать строками в Python – одно удовольствие, так как язык предоставляет для них множество удобных методов. Также имеется поддержка «сырых» строк и строковых литералов.
Чтобы строка стала «сырой», перед ней необходимо поставить символ r в любом регистре.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Дизассемблирование
Встроенный модуль dis позволяет декомпилировать написанную вами программу в байт-код Python.
На картинке показана работа этого модуля на примере функции, но такое можно повторить и с классами – в таком случае все его функции будут дизассемблированы.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Использование цикла
В этом коде мы вызываем функцию для обращения строки, которая повторяется для каждого элемента и интересным способом присоединяет каждый символ к началу, чтобы получить обратную строку.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Коллеги, у меня вопрос, удобна ли для вас такая форма подачи материала? В смысле сверхкратко и без растеканий?
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Сортировка словаря по значениям
Сортировка данных словаря по значениям ключей, а не по самим ключам, нередко ставит в тупик.
Задача решается довольно просто при помощи аргумента key функции sorted для указания функции, которая будет вызываться на каждом элементе до сравнения.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Ключевое слово del
Для удаления элемента из списка можно использовать ключевое слово del с названием списка после него. Также потребуется передать индекс того элемента, который нужно удалить.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Нахождение наиболее частых элементов списка
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком Counter из библиотеки collections.
Метод Counter.most_common(x) возвращает x кортежей, в которых первое значение – элемент, а второе – количество его повторений.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Вычисление времени выполнения в оболочке
Иногда важно знать время выполнения в оболочке или в блоке кода для получения лучшего алгоритма с минимальным количеством затраченного им времени.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Функция zip
Функция zip создаёт итератор, который комбинирует элементы нескольких списков. Это позволяет осуществлять параллельный обход списков в циклах for или, например, выполнять параллельную сортировку.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Возведение в квадрат всех чисел в заданном диапазоне
В этом фрагменте для нахождения квадрата каждого целого числа в заданном диапазоне прибегнем к помощи встроенной функции itertools
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Функция reduce
Модуль functools позволяет хорошо раскрыть функциональные возможности Python. Например, в functools есть интересная функция reduce, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.
Таким образом, в примере выше reduce умножает 1 на 2, затем результат этого умножения на 3 и так далее.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Удаление символа с помощью метода join() и генераторов списков
Суть этого метода в том, чтобы конвертировать строку в эквивалентный список. После этого все элементы кроме того, который мы собираемся удалить, объединяются в строку.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Создание словаря из набора ключей
Для создания словаря из известного набора ключей и одинаковых значений часто используют генераторы словарей (dict comprehensions).
Однако класс dict имеет удобный метод fromkeys, который был создан специально для таких случаев.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,762
Реакции
1,450
Credits
25,294
Считываем бинарный файл со строковыми данными в массив
Бинарный файл содержит список с числовыми данными. Функция open() открывает файл и читает из него данные. Затем из бинарника читаются первые 5 чисел и перед выводом объединяются в список.
фронт.jpg