Моржовый оператор (Walrus Operator)
Моржовый оператор (Walrus operator) — это оператор
Синтаксис выглядит так: имя_переменной
Переменная доступна в остальной части выражения после оператора.
Это удобно при работе с выражениями со сложными вложенными операциями. Позволяет избежать повторного вычисления.
👉
Моржовый оператор (Walrus operator) — это оператор
:=, введенный в версии 3.8. Он позволяет одновременно присвоить значение переменной и вернуть его.Синтаксис выглядит так: имя_переменной
:= выражение. Справа вычисляется выражение и присваивается переменной слеваПеременная доступна в остальной части выражения после оператора.
Это удобно при работе с выражениями со сложными вложенными операциями. Позволяет избежать повторного вычисления.
👉
Библиотека cvxpy
cvxpy — эта библиотека позволяет описывать оптимизационные задачи в высокоуровневом виде и эффективно решать их с помощью численных методов.
Основные возможности cvxpy:
— Удобный синтаксис для задания целевой функции и ограничений в виде выражений Python.
— Поддержка разных типов переменных: вещественных, целочисленных, булевых.
— Возможность задания неравенств и равенств как ограничений.
— Встроенные функции для задания норм, статистических величин и других полезных выражений.
— Автоматический выбор подходящего численного решателя на основе задачи.
— Интеграция с NumPy, SciPy и другими популярными библиотеками.
cvxyp часто используется для решения задач оптимизации в машинном обучении, обработке сигналов, финансовом моделировании и других областях.
👉
cvxpy — эта библиотека позволяет описывать оптимизационные задачи в высокоуровневом виде и эффективно решать их с помощью численных методов.
Основные возможности cvxpy:
— Удобный синтаксис для задания целевой функции и ограничений в виде выражений Python.
— Поддержка разных типов переменных: вещественных, целочисленных, булевых.
— Возможность задания неравенств и равенств как ограничений.
— Встроенные функции для задания норм, статистических величин и других полезных выражений.
— Автоматический выбор подходящего численного решателя на основе задачи.
— Интеграция с NumPy, SciPy и другими популярными библиотеками.
cvxyp часто используется для решения задач оптимизации в машинном обучении, обработке сигналов, финансовом моделировании и других областях.
👉
super()
super() — это встроенная функция, которая используется для вызова родительского класса. Она позволяет вызывать методы родительского класса из дочернего класса.
Это полезно при наследовании, чтобы использовать функционал базового класса.
Вызов
Функция принимает аргументы
Она часто используется в методах
Использование
👉
super() — это встроенная функция, которая используется для вызова родительского класса. Она позволяет вызывать методы родительского класса из дочернего класса.
Это полезно при наследовании, чтобы использовать функционал базового класса.
Вызов
super() ищет следующий класс в цепочке наследования и вызывает этот метод.Функция принимает аргументы
self и cls для связывания с текущим объектом и классом.Она часто используется в методах
init дочерних классов, чтобы вызвать init родителя и инициализировать его.Использование
super() позволяет избежать неявного упоминания имени базового класса в коде.👉
Дана входная строка s, необходимо изменить порядок слов в строке на противоположный
Слово определяется как последовательность символов, не содержащих пробелов. Слова в s будут разделены как минимум одним пробелом.
Вернуть строку, состоящую из слов в обратном порядке, объединенных одним пробелом.
*s может содержать начальные или конечные пробелы, а также несколько пробелов между двумя словами. Возвращаемая строка должна содержать только один пробел, разделяющий слова.
Чтобы решить данную задачу нам необходимо:
— Удалить начальные и конечные пробелы, а также уменьшить количество пробелов между словами до одного.
— Разбить строку на отдельные слова и сохранить в списке.
— Поменять порядок слов в списке на обратный с помощью метода
— Объединить слова в строку, разделенную одним пробелом, и вернуть результат.
👉
Слово определяется как последовательность символов, не содержащих пробелов. Слова в s будут разделены как минимум одним пробелом.
Вернуть строку, состоящую из слов в обратном порядке, объединенных одним пробелом.
*s может содержать начальные или конечные пробелы, а также несколько пробелов между двумя словами. Возвращаемая строка должна содержать только один пробел, разделяющий слова.
Чтобы решить данную задачу нам необходимо:
— Удалить начальные и конечные пробелы, а также уменьшить количество пробелов между словами до одного.
— Разбить строку на отдельные слова и сохранить в списке.
— Поменять порядок слов в списке на обратный с помощью метода
reverse().— Объединить слова в строку, разделенную одним пробелом, и вернуть результат.
👉
Faker — полезная библиотека для генерации фиктивных данных. Поддерживает не только английский язык. Для русского нужно прописать
Перед работой не забудьте сделать
https://faker.readthedocs.io/en/master/
👉
fake = Faker(«ru_Ru»)Перед работой не забудьте сделать
pip install Fakerhttps://faker.readthedocs.io/en/master/
👉
Библиотека EasyOCR для распознавания текста на картинках
Поддерживает 80+ языков. Выдаёт результат в виде списка, каждый элемент которого представляет собой координаты ограничивающей рамки, обнаруженный текст и уровень уверенности модели.
Установка через
https://github.com/JaidedAI/EasyOCR
👉
Поддерживает 80+ языков. Выдаёт результат в виде списка, каждый элемент которого представляет собой координаты ограничивающей рамки, обнаруженный текст и уровень уверенности модели.
Установка через
pip install easyocr
https://github.com/JaidedAI/EasyOCR
👉
Float или Decimal: в чём различия и что лучше использовать?
И тот, и другой предназначены для работы с дробными числами, но есть нюанс. Float использует некоторое приближение при работе с числами с плавающей точкой, поэтому может вносить ошибки округления. То есть Float эффективный и быстрый, но не очень точный.
Эта особенность может мешать в некоторых случаях, например, при работе с деньгами. Ошибки округления могут привести к значительным потерям, если обрабатывается большое количество транзакций. Тогда лучше использовать Decimal. Его нужно импортировать —
👉
И тот, и другой предназначены для работы с дробными числами, но есть нюанс. Float использует некоторое приближение при работе с числами с плавающей точкой, поэтому может вносить ошибки округления. То есть Float эффективный и быстрый, но не очень точный.
Эта особенность может мешать в некоторых случаях, например, при работе с деньгами. Ошибки округления могут привести к значительным потерям, если обрабатывается большое количество транзакций. Тогда лучше использовать Decimal. Его нужно импортировать —
from decimal import Decimal. Передавать на вход следует строку. Как видно на картинке, благодаря Decimal устраняются возможные ошибки округления.👉
Библиотека captcha, генерирующая звуковые и графические CAPTCHA
Установка —
Аудио- и графические CAPTCHA находятся в отдельных модулях:
https://github.com/lepture/captcha
👉
Установка —
pip install captchaАудио- и графические CAPTCHA находятся в отдельных модулях:
from captcha.audio import AudioCaptcha
from captcha.image import ImageCaptcha
audio = AudioCaptcha(voicedir='/path/to/voices')
image = ImageCaptcha(fonts=['/path/A.ttf', '/path/B.ttf'])
data = audio.generate('1234')
audio.write('1234', 'out.wav')
data = image.generate('1234')
image.write('1234', 'out.png')
https://github.com/lepture/captcha
👉
Как реализовать очередь в Python
Очереди (Queues) — одна из структур данных, используемая для хранения коллекций элементов в порядке first-in, first-out (FIFO). Всё, как в настоящей очереди, — кто первым вошёл, то раньше всех и вышел.
В Python очереди можно реализовать с помощью класса
Чтобы добавить элементы в очередь: в deque используем метод
Чтобы удалить элементы из очереди: в deque — метод
Чтобы проверить размер очереди, используем
Стоит отметить, что queue.Queue предназначен для многопоточного программирования.
👉
Очереди (Queues) — одна из структур данных, используемая для хранения коллекций элементов в порядке first-in, first-out (FIFO). Всё, как в настоящей очереди, — кто первым вошёл, то раньше всех и вышел.
В Python очереди можно реализовать с помощью класса
deque() из модуля collections или модуля queue.Чтобы добавить элементы в очередь: в deque используем метод
append(), в Queue — put()Чтобы удалить элементы из очереди: в deque — метод
popleft(), в Queue — get()Чтобы проверить размер очереди, используем
len()Стоит отметить, что queue.Queue предназначен для многопоточного программирования.
👉
Что делает функция takewhile() модуля itertools
Функция создаёт итератор, возвращающий элементы из итерируемого объекта до тех пор, пока указанное условие истинно (True или 1). Как только условие становится ложным, итератор прекращает свою работу и больше не возвращает элементы.
В примере takewhile будет возвращать элементы из списка my_list, пока они меньше пяти. Как только встретится элемент, равный или больший пяти, работа прекратится.
👉
Функция создаёт итератор, возвращающий элементы из итерируемого объекта до тех пор, пока указанное условие истинно (True или 1). Как только условие становится ложным, итератор прекращает свою работу и больше не возвращает элементы.
В примере takewhile будет возвращать элементы из списка my_list, пока они меньше пяти. Как только встретится элемент, равный или больший пяти, работа прекратится.
👉
Starmap()
Таким образом,
В примере
👉
starmap() принимает в качестве аргументов другую функцию и итерируемый объект, элементы которого представлены кортежами. Переданная функция применяется к каждому из кортежей, каждый кортеж распаковывается, и его элементы передаются в функцию как отдельные аргументы.Таким образом,
starmap() можно использовать вместо map(), если данные были предварительно упакованы в кортежи.В примере
starmap() позволяет вычислить квадраты чисел в кортежах в списке и сложить их.👉
Зачем нужен модуль enum
Содержит в себе перечисления, которые используются для создания именованных констант. Рассмотрим на примере:
Вы пишете приложение, в котором нужно обрабатывать различные типы ошибок (404, 500 и так далее). Перечисления могут быть использованы для представления разных кодов ошибок.
По сути, перечисления — это набор символических имён, связанных с уникальными значениями. По ним можно итерироваться. В целом, модуль enum позволяет создать более читаемый и самодокументирующийся код.
https://habr.com/ru/companies/timeweb/articles/564826/
👉
Содержит в себе перечисления, которые используются для создания именованных констант. Рассмотрим на примере:
Вы пишете приложение, в котором нужно обрабатывать различные типы ошибок (404, 500 и так далее). Перечисления могут быть использованы для представления разных кодов ошибок.
По сути, перечисления — это набор символических имён, связанных с уникальными значениями. По ним можно итерироваться. В целом, модуль enum позволяет создать более читаемый и самодокументирующийся код.
https://habr.com/ru/companies/timeweb/articles/564826/
👉
Модуль pprint для красивого вывода сложных структур данных
Используется как обычный
Также в модуле есть функция
Ещё для
👉
Используется как обычный
print(), но в отличие от него выводит данные в удобном для чтения человеком виде. Также в модуле есть функция
pformat(), которая создаёт строковые представления вместо вывода. Это может пригодиться для логгирования.Ещё для
pprint() можно задать ширину экрана печати, отступ последующего уровня вложенности и даже автоматически отсортировать словарь перед выводом. 👉
Минимальные примеры структур данных и алгоритмов на Python
Устанавливается просто через
Затем можно импортировать различные алгоритмы:
▫️сортировки (быстрая, пузырьком и ещё +22 вида);
▫️графовые;
▫️поиска;
▫️на деревьях и так далее.
https://github.com/keon/algorithms/
👉
Устанавливается просто через
pip install algorithmsЗатем можно импортировать различные алгоритмы:
▫️сортировки (быстрая, пузырьком и ещё +22 вида);
▫️графовые;
▫️поиска;
▫️на деревьях и так далее.
https://github.com/keon/algorithms/
👉
Python 3 Beginners Reference Cheat Sheet.pdf
332 KB
Шпаргалка по Python 3 для начинающих
👉
👉
Модуль fractions для работы с дробями
Создать рациональное число можно через
Целые и вещественные числа Python можно преобразовать в дробь, передав их
С модулем
👉
Создать рациональное число можно через
Fraction() из пары целых чисел, другого рационального числа или строки. Numerator — это числитель, а denominator — знаменатель. По умолчанию numerator=0, denominator=1. Целые и вещественные числа Python можно преобразовать в дробь, передав их
Fraction().С модулем
fractions устраняются проблемы с ошибками представления, возникающие в числах с плавающей точкой. 👉
Более эффективный метод объединения строк
Про объединение (конкатенацию) строк с помощью оператора + говорят в каждом туториале по Python для новичков. Однако иногда это не самый эффективный способ решить задачу.
Дело в том, что строки — неизменяемые объекты в Python. Это означает, что каждый раз при конкатенации вы создаёте новую строку с объединённым содержимым.
Более экономно по памяти и быстрее будет использовать метод
👉
Про объединение (конкатенацию) строк с помощью оператора + говорят в каждом туториале по Python для новичков. Однако иногда это не самый эффективный способ решить задачу.
Дело в том, что строки — неизменяемые объекты в Python. Это означает, что каждый раз при конкатенации вы создаёте новую строку с объединённым содержимым.
Более экономно по памяти и быстрее будет использовать метод
join() для списков. При вызове он создаёт единственную строку. 👉
Операции над множествами в Python
Операции над множествами в Python реализуются с помощью встроенного типа данных
Множества — это неупорядоченные коллекции уникальных элементов. Python предоставляет несколько полезных операций над множествами, таких как объединение, пересечение, разность и симметрическая разность.
Примеры основных операций над множествами в Python:
Создание множества
Объединение множеств (
Объединение возвращает множество, содержащее все элементы обоих множеств.
Пересечение множеств (
Пересечение возвращает множество, содержащее только общие элементы двух множеств.
Разность множеств (
Разность возвращает множество, содержащее элементы, которые находятся только в одном множестве.
Операции над множествами в Python реализуются с помощью встроенного типа данных
set. Множества — это неупорядоченные коллекции уникальных элементов. Python предоставляет несколько полезных операций над множествами, таких как объединение, пересечение, разность и симметрическая разность.
Примеры основных операций над множествами в Python:
Создание множества
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
Объединение множеств (
union)Объединение возвращает множество, содержащее все элементы обоих множеств.
c = a.union(b)
# или можно использовать оператор |
c = a | b
print(c) # {1, 2, 3, 4, 5, 6}
Пересечение множеств (
intersection)Пересечение возвращает множество, содержащее только общие элементы двух множеств.
c = a.intersection(b)
# или можно использовать оператор &
c = a & b
print(c) # {3, 4}
Разность множеств (
difference)Разность возвращает множество, содержащее элементы, которые находятся только в одном множестве.
c = a.difference(b)...
# или можно использовать опера
Что делает класс ChainMap() модуля collections
Он позволяет объединять несколько словарей так, чтобы их можно было рассматривать как единое целое.
Лучше всего посмотреть на примере:
Экземпляр ChainMap не копирует входные словари, а хранит ссылки на них. Поэтому он может быть более эффективным по памяти по сравнению с другими методами, которые создают копии словарей.
Обновление или вставка в ChainMap затрагивают только первый входной словарь. Снова посмотрим на примере:
👉
Он позволяет объединять несколько словарей так, чтобы их можно было рассматривать как единое целое.
Лучше всего посмотреть на примере:
d1 = dict(a=1, b=3)
d2 = dict(a=2, b=4, c=6)
from collections import ChainMap
chain = ChainMap(d1, d2)
print(chain['a']) # -> 1
print(chain['c']) # -> 6Экземпляр ChainMap не копирует входные словари, а хранит ссылки на них. Поэтому он может быть более эффективным по памяти по сравнению с другими методами, которые создают копии словарей.
Обновление или вставка в ChainMap затрагивают только первый входной словарь. Снова посмотрим на примере:
chain['c'] = -1
print(d1) # -> {'a': 1, 'b': 3, 'c': -1}
print(d2) # -> {'a': 2, 'b': 4, 'c': 6}👉