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

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Функция findall()

Если мы хотим найти все вхождения, в дело вступает функция findall().
Синтаксис: findall(pattern, string, flags=0[optional])
В случае успеха данная функция возвращает список, в котором в виде строк содержатся все искомые вхождения по порядку. Если вхождений нет, то эта функция возвратит пустой список.
16602187.jpg
 

GuDron

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

GuDron

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

Полезные функции для работы со строками. Python известен тем, что можно написать код в одну строчку использованием метода вместо перебора списком.

Перечислим наиболее полезные методы:

capitalize() - первая буква большая, остальные маленькие
strip() - удаление пробелов в начале и конце
center(int, chr='') - отцентрирует текст, int - нужное кол-во символов в строке, а chr - символ для добавления в начало и конец
swapcase() - заглавные буквы в прописные, маленькие в большие
lower() - преобразует к нижнему регистру
upper() - преобразует к верхнему регистру

При написании нейронок и ботов обязательно приводите все к нижнему регистру с помощью lower(). При написании ботов часто использую center(), для красивого вывода.
photo_2022-03-30_11-50-54.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Модуль shutil

Очень смешное название, но библиотека является мощным инструментом для обработки файлов. В прошлом посте говорилось о модуль os. Надо учитывать, что многие задачи решить через него можно, но придется постараться.
Программисты комбинируют os и shutil для достижения наиболее красивого и эффективного кода.
shutil.copyfileobj(fsrc, fdst) - копирует один файл в другой.
shutil.copymode(fsrc, fdst) - копирует права доступа из одного файла в другой.
shutil.copystat(fsrc, fdst) - копирует дату последнего доступа и изменения из одного файла в другой.
Библиотека позволяет так же работать с архивами shutil.get_archive_formats(), чтобы узнать доступные для работы архивы.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Аргумент по умолчанию – резервное значение

В Python параметр по умолчанию определяется с резервным значением в качестве аргумента по умолчанию. Такие параметры являются необязательными во время вызова функции. Если аргумент не указан, используется значение по умолчанию, а если аргумент предоставлен, он перезапишет значение по умолчанию.
16610280.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Модуль zipfile

Как говорилось ранее с zip может работать модуль shutil, но zipfile более многофункционален. С другой стороны он не так универсален и работает только с зипами. За все надо платить, не существует идеального способа для всего.
Для начала надо из zipfile импортировать ZipFile. И открыть файл ZipFile(file).
printdir() - вывод списка содержимого текстом для печати.
namelist() - вывод списка фалов списком.
open() - открыть файл внутри архива, далее работа проходит аналогично работе фалов.
Для практики на картинке показана программа выводящая красивый вложенный список файлов находящихся в архиве.
Больше возможностей можно узнать через help() или документацию.
16610280.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Итерирование с использованием функции enumerate

Функция range позволяет получить только индексы элементов списка. Функция enumerate генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента. Эти кортежи можно распаковать еще в заголовке for
Получается короткий и понятный код!
В примере разберем как извлечь из списка элементы и их индекс, рис.1.
фронт.jpg

Еще одной полезной и крутой фишкой этой функции будет легкое создания счетчика. Более того, мы можем установить первоначальное значение счетчика, рис. 2.
photo_2022-04-01_12-21-00.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Сборка exe файлов - pyinstaller

Если вы просто скопируете проект, то он не будет работать на других системах где нет установленного Python, а если есть, то возможно там отсутствуют нужные библиотеки. Но можно создать исполняемый файл exe, который запустится и без Python. Необходимо установить pyinstaller:

install pyinstaller

Затем перейти в командную строку, и перейти в нужную директорию с помощью команды cd. Далее напишем такой код:

--onefile --noconsole main.py

--onefile - означает, что будет только один исполняемый файл.

--noconsole - консоль не будет запускаться при открытии

main.py - файл, при запуске которого начинает работать ваша программа

В папке dist будет лежать нужный файл, остальные созданные папки можно удалить

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

GuDron

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

Вы можете использовать метод .tolist() для перевода массива в список.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Разница между == и is

Недавно в чате наши подписчики затрагивали эту тему, поэтому мы решили разложить всё по полочкам, чтобы в дальнейшем не возникало вопросов.

Итак, оператор == проверяет равенство значений двух объектов. А оператор is в свою очередь проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.

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

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Как округлить до тысячных в python?

Вы можете использовать round()
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Как создать массив из n элементов в python?

Вы можете использовать цикл и метод .append(). Так же для примера можно использовать модуль random.
фронт.jpg
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,771
Реакции
1,451
Credits
25,339
Библиотека FuzzyWuzzy

Интересная и полезная библиотека поиска совпадений в тексте. Очень поможет вам при работе над общающимися ботами: голосовыми или текстовыми помощниками.

Разумеется, это один из инструментов, всегда можно использовать другой, но я лично пользуюсь этим.

Библиотеку следует установить:

install fuzzywuzzy
фронт.jpg
 

GuDron

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

Предположим, что требуется создать новый список, элементами которого будут являться квадраты чисел данного списка. Большинство сразу же напишут простенький цикл for.

Но в этом и проблема. Такой подход займет как минимум три строчки: объявление новой переменной, создание цикла и инструкции внутри него. При этом также снижается скорость работы скрипта.

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