Python Learning
33.5K subscribers
1.95K photos
8 videos
7 files
951 links
№ 4974297878

Обучающий канал по Python

Ссылка для друга - https://t.me/+I7jrAQKR5xAyYTAy

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Python_per_month
Download Telegram
⚙️ Оптимизация памяти в Python: Использование генераторов вместо списков

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

➡️ Пример кода

Допустим, у нас есть задача найти квадраты чисел от 1 до 1 000 000. Сначала посмотрим, как это сделать с помощью списка:

# Плохая практика: использование списка
squares = [x**2 for x in range(1, 1000001)]


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

# Лучшая практика: использование генератора
squares = (x**2 for x in range(1, 1000001))


Теперь squares - это генератор, который генерирует квадраты чисел по мере необходимости, занимая минимальное количество памяти.

Почему это полезно

Использование генераторов вместо списков позволяет значительно экономить память, особенно при работе с большими наборами данных. Это делает ваш код более эффективным и позволяет работать с гораздо большими объемами данных без значительных затрат ресурсов.

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22
Что будет выведено при выполнении кода?

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Конкатенация строк

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

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


✔️ Более эффективный подход к решению этой задачи заключается в использовании функции join():

characters = ['p', 'y', 't', 'h', 'o', 'n']
word = "".join(characters)
print(word) # python


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12😱5
➡️ clean-text для нормализации и очистки текста

Отличный однострочный код для нормализации и очистки текста — идеально для проектов по обработке естественного языка.

Контент, созданный пользователями в Интернете и в социальных сетях, часто бывает грязным. Предварительно обработайте свои данные с помощью clean-text, чтобы создать нормализованное текстовое представление. Например, преобразуйте этот испорченный ввод:

A bunch of \\u2018new\\u2019 references, including [Moana](https://en.wikipedia.org/wiki/Moana_%282016_film%29).
»Yóù àré rïght <3!«


в этот чистый вывод:

A bunch of 'new' references, including [moana](<URL>).
"you are right <3!"


🔗 Ссылочка на доку

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🆒4
⚙️ Оптимизация памяти в Python: Использование генераторов вместо списков

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

➡️ Пример кода

Допустим, у нас есть задача найти квадраты чисел от 1 до 1 000 000. Сначала посмотрим, как это сделать с помощью списка:

# Плохая практика: использование списка
squares = [x**2 for x in range(1, 1000001)]


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

# Лучшая практика: использование генератора
squares = (x**2 for x in range(1, 1000001))


Теперь squares - это генератор, который генерирует квадраты чисел по мере необходимости, занимая минимальное количество памяти.

Почему это полезно

Использование генераторов вместо списков позволяет значительно экономить память, особенно при работе с большими наборами данных. Это делает ваш код более эффективным и позволяет работать с гораздо большими объемами данных без значительных затрат ресурсов.

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🆒3
Что будет выведено при выполнении кода?

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Использование коллекций Python

Коллекции Python — это контейнерные типы данных. В частности, это списки, множества, кортежи, словари. Модуль collections даёт в распоряжение разработчика высокопроизводительные типы данных, которые помогают улучшить код, сделать его чище и облегчить работу с ним. Этот модуль содержит множество полезных методов. Здесь мы рассмотрим метод Counter().

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


🗣️ Для создания объекта Counter нужно передать итерируемый объект (список, например) методу Counter()

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
➡️ Преобразование двух списков в словарь

Предположим, у нас имеется два списка. Один из них содержит имена студентов, а второй — их оценки. Как преобразовать эти два списка в словарь?

✔️ Для решения задачи можно прибегнуть к функции zip().

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25
➡️ Возврат из функции нескольких значений

В Python есть возможность возврата из функции нескольких значений. Этого нет во многих других популярных языках программирования.

✔️ Для возврата из функции нескольких значений их нужно разделить запятыми. На основе этого списка значений Python создаст кортеж и вернёт его туда, откуда была вызвана функция.

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2
⚙️ Использование функции sorted()

В Python очень легко сортировать некие последовательности данных с использованием встроенной функции sorted(), которая берёт на себя решение всех сопутствующих задач.

🗣️ Эта функция сортирует любые последовательности (списки, кортежи) и всегда возвращает список с отсортированными элементами. Рассмотрим пример сортировки списка чисел в порядке возрастания:

sorted([3,5,2,1,4]) # [1, 2, 3, 4, 5]


➡️ А вот — пример сортировки списка строк в порядке убывания:

sorted(['france', 'germany', 'canada', 'india', 'china'], reverse=True) # ['india', 'germany', 'france', 'china', 'canada']


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤‍🔥2🔥2🎉1
⚙️ bashplotlib

Хотите строить графики в консоли?

$ pip install bashplotlib


Стройте на здоровье.

🔗 Ссылочка на доку

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾13❤‍🔥3👍2
⚙️ dir

Когда-нибудь задумывались о том, как заглянуть внутрь объекта в Python и посмотреть на его атрибуты? Конечно, задумывались.

➡️ Используем командную строку:

>>> dir()
>>> dir("Hello World")
>>> dir(dir)


🗣️ Это может пригодиться при интерактивной сессии в Python, а также для динамического изучения объектов и модулей, с которыми вы работаете.

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾12👍7🤔4🏆2
Что будет выведено при выполнении кода?

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Jedi

🗣️ Библиотека Jedi предназначена для автодополнения и анализа кода. Она ускоряет процесс написания кода и делает его более продуктивным.

Если вы не разрабатываете свою IDE, то вам, наверное, будет более интересно использовать Jedi в качестве расширения редактора. К счастью, уже есть много вариантов.

Возможно, вы уже встречались с Jedi — IPython использует эту библиотеку для автодополнения.


🔗 Ссылочка на доку

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🎉21
howdoi

Зависли над какой-то проблемой и не можете вспомнить её решение? Нужно зайти на StackOverflow, но не хочется покидать терминал?

✔️ Тогда вам не обойтись без этого инструмента командной строки:

$ pip install howdoi


➡️ Задайте любой вопрос, и он постарается найти ответ на него:

$ howdoi vertical align css
$ howdoi for loop in java
$ howdoi undo commits in git


🗣️ Но будьте осторожны: он извлекает код из топовых ответов на StackOverflow и не всегда даёт полезную информацию:

$ howdoi exit vim


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10😢2🎉2❤‍🔥1