Дана входная строка 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}👉
Большая_обновленная_шпаргалка_по_Python_для_начинающих.pdf
741 KB
Большая обновлённая шпаргалка по Python для начинающих
👉
👉
Media is too big
VIEW IN TELEGRAM
Создайте мессенджер с помощью Django (за 6 минут) 🌮
0:00 Showing the final product
0:22 Setup Django and Daphne
1:08 Add async and sync views
2:09 Add templates with EventSource
2:52 Explaining how the chat works
3:35 Explaining how sending a message works
4:19 Create models to store data
4:25 Run our server
4:42 Visit our real-time chat app
5:28 Add styling to improve UI
6:00 Benefits and mailing list for more free content
источник
👉
0:00 Showing the final product
0:22 Setup Django and Daphne
1:08 Add async and sync views
2:09 Add templates with EventSource
2:52 Explaining how the chat works
3:35 Explaining how sending a message works
4:19 Create models to store data
4:25 Run our server
4:42 Visit our real-time chat app
5:28 Add styling to improve UI
6:00 Benefits and mailing list for more free content
источник
👉
Ускоряем работу python с numba
Numba — это Just-In-Time компилятор, который превращает ваш код на питоне в машинный код на лету. Это не просто мелкая оптимизация, а серьёзно ускорение.
Если вы знакомы с интерпретируемыми языками, вы знаете, что они обычно медленнее компилируемых из-за необходимости анализировать и исполнять код на лету. Но что, если бы вы могли получить лучшее из обоих миров? JIT-компиляция позволяет интерпретируемому языку, каким является питон, динамически компилировать части кода в машинный код, значительно ускоряя исполнение.
Numba использует этот подход, чтобы помочь вашему коду на питоне быть быстрей. Она анализирует вашу функцию, определяет типы данных и затем компилирует её в оптимизированный машинный код. И всё это происходит во время выполнения вашего кода.
https://habr.com/ru/companies/otus/articles/784068/
👉
Numba — это Just-In-Time компилятор, который превращает ваш код на питоне в машинный код на лету. Это не просто мелкая оптимизация, а серьёзно ускорение.
Если вы знакомы с интерпретируемыми языками, вы знаете, что они обычно медленнее компилируемых из-за необходимости анализировать и исполнять код на лету. Но что, если бы вы могли получить лучшее из обоих миров? JIT-компиляция позволяет интерпретируемому языку, каким является питон, динамически компилировать части кода в машинный код, значительно ускоряя исполнение.
Numba использует этот подход, чтобы помочь вашему коду на питоне быть быстрей. Она анализирует вашу функцию, определяет типы данных и затем компилирует её в оптимизированный машинный код. И всё это происходит во время выполнения вашего кода.
https://habr.com/ru/companies/otus/articles/784068/
👉
Что делает функция seed() модуля random
Функция
Пример использования:
Основные моменты:
- Если вызвать
- Если
Таким образом, использование
👉
Функция
seed() в модуле random в Python используется для инициализации генератора случайных чисел. По умолчанию генератор случайных чисел использует текущее системное время, чтобы генерировать случайные числа, но если задать определённое значение с помощью функции seed(), последовательность случайных чисел станет предсказуемой.Пример использования:
import random
random.seed(10)
print(random.random()) # Всегда будет генерировать одно и то же число
Основные моменты:
- Если вызвать
random.seed() с одним и тем же значением несколько раз, генератор будет создавать одну и ту же последовательность случайных чисел.- Если
seed() не вызывается или вызывается без аргументов, генерация случайных чисел будет происходить на основе текущего времени или другого системного источника.Таким образом, использование
seed() полезно, когда требуется воспроизвести результаты, например, в тестах или для отладки.👉