Python Map | Обучение
246 subscribers
196 photos
4 videos
1 file
85 links
Образовательный канал для программистов на Python 🐍

Сотрудничество – @HackingIP
Download Telegram
Оценка сложности алгоритма

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

Временная сложность алгоритма определяет сколько времени потребуется на выполнение алгоритма в зависимости от размера входных данных. Временная сложность обычно выражается в "O-нотации". Например, алгоритм с временной сложностью O(n) будет иметь линейную зависимость от размера входных данных n.

Пространственная сложность алгоритма определяет сколько памяти потребуется на выполнение алгоритма в зависимости от размера входных данных. Например, алгоритм с пространственной сложностью O(n) будет занимать память пропорционально размеру входных данных n.

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

#теория
🤓2👍1
Сортировка пузырьком

Самый простой и известный способ сортировки элементов массива. Вместе с этим это самый неэффективный алгоритм, на выполнение которого уходит много времени.

Временная сложность = O(n²).
В наихудшем случае внутренний цикл работает не менее n раз. Поэтому операция займет не менее n² времени.

Пространственная сложность = O(1).
Дополнительная память не используется, потому что происходит обмен элементов в исходном массиве

#алгоритмы
Книга: "Знакомство с Python (Дэн Бейдер)"

Лаконичное руководство по Python от автора книги "Чистый Python" и проекта RealPython. Хорошее и плавное погружение в Питон с разбором полезных библиотек: включая обработку CSV файлов, установку пакетов с помощью pip, работу с PDF, знакомство с базами данных, парсинг сайтов, научные вычисления в NumPy и создание приложений с графическим интерфейсом.

Книга не сильно глубокая, но как старт в программирование на Python вполне хороша.

#книги
Метод string.count()

Метод count для строк возвращает количество непересекающихся совпадений. При необходимости, можно установить начальную и конечную позиции поиска, используя аргументы start и end. Обратите внимание: метод чувствителен к регистру.

#практика
Сегодня отмечается день рождения одного из самых популярных и универсальных языков программирования - Python! Этот язык был разработан Гвидо ван Россумом и впервые выпущен 20 февраля 1991 года. С тех пор Python завоевал огромную популярность благодаря своей простоте, гибкости и множеству библиотек для различных задач. Он используется во многих областях, включая разработку веб-приложений, анализ данных, искусственный интеллект, машинное обучение и многое другое. Поздравляем язык Python с его днем рождения и благодарим его создателя и сообщество разработчиков за их труд и вклад в мир программирования! 🎉🎂🐍
4
Функция zip()

Функция zip() объединяет элементы из двух или более итерируемых объектов в кортежи. Эти кортежи могут быть использованы для одновременного перебора последовательности, создания словарей, сортировки нескольких связанных между собой списков. Результатом вызова zip() является итератор кортежей, где i-й кортеж содержит i-й элемент из каждой последовательности.

Обратите внимание, что если объекты имеют разную длину, итерация происходит по минимальной длине из всех объектов.

#практика
Функция range()

Функция range() возвращает итератор – объекта класса range, содержащий целые числа в указанном диапазоне. Если функции передается только один аргумент (stop), то возвращается последовательность чисел, начиная с 0 и заканчивая указанным числом, но не включая его. Если в функцию передаются два аргумента (start, stop), то возвращается последовательность чисел, начиная с числа start и заканчивая числом stop, но не включая его. Третий аргумент функции – это шаг последовательности, по умолчанию 1.

#практика
Алгоритм Евклида

Алгоритм Евклида — это эффективный алгоритм для нахождения наибольшего общего делителя двух целых чисел путем последовательных вычитаний одного числа из другого. Метод состоит в том, чтобы последовательно вычитать меньшее число из большего до тех пор, пока они не станут равны друг другу. Этот метод основан на том факте, что НОД(a, b) = НОД(b, a-b) для любых натуральных чисел a и b.

Пример:
Найти НОД для a = 24 и b = 18
24 - 18 = 6
a = 6 и b = 18
18 - 6 = 12
a = 6 и b = 12
12 - 6 = 6
a = 6 и b = 6
Ответ: 6


Записанный в таком виде алгоритм неэффективен, так как многократно использует вычитания. Чтобы оптимизировать алгоритм необходимо заменить операцию вычитания на взятие остатка.

#алгоритмы
Модуль math: округление

Модуль math предоставляет несколько функций для округления чисел. Функция floor() округляет число в меньшую сторону. Функция ceil() округляет число в большую сторону. Функция trunc() отбрасывает дробную часть числа.

#практика
«Чтобы выучить язык нужно разговаривать с его носителем»

Я, изучающий Python:

#юмор
Функции chr() и ord()

Функция chr() принимает целое число в качестве аргумента и возвращает символ, соответствующий этому числу в таблице символов Unicode.

Функция ord() принимает символ в качестве аргумента и возвращает соответствующее ему целое число в таблице символов Unicode.

#практика
👍2
Функция repr()

Функция repr() возвращает строку, которая представляет печатаемое формальное представление объекта. Внутренне функция вызывает метод __repr__ передаваемого объекта. Подробнее об использовании этой функции можно прочитать в статье.

👉 Читать статью

#статьи
Класс datetime: метод now()

Метод now() класса datetime возвращает объект класса datetime с текущей локальной датой и временем (на устройстве) .

#практика
Красивая визуализация ошибок

Программистам важны хорошие сообщения об ошибках, поскольку они помогают лучше понимать что произошло в программе, а также быстрее и эффективнее исправлять проблемы.

Библиотека rich.traceback предоставляет улучшенный и красивый способ отображения сообщений об ошибках. Она позволяет добавить цветовую разметку, форматирование, отображение локальных переменных, трассировку стека ошибки и другие улучшения, улучшающие визуальное представление ошибок. Это делает процесс отладки более эффективным и приятным.

Установка: pip install rich

#практика
🔥3
Модуль collections: класс Counter

Класс Counter() из модуля collections - это подкласс словаря dict, который используется для удобного и быстрого подсчета количества хешируемых объектов (неизменяемых, таких как числа, строки, кортежи), хранимых в последовательностях. Коллекция Counter хранит элементы как ключи, а их количества как значения.

#типы_данных
Множество

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

Функция set() — формирует множество. При создании удаляются все повторяющиеся элементы.

Чаще всего множества используются для проверки на принадлежность, удаления дубликатов из последовательности и выполнения математических операций, таких как пересечение, объединение, разность и симметрическая разность.

Проверка членства в множестве происходит гораздо быстрее, чем в списке: в списке это займет O(n) или O(log n) для отсортированного списка, тогда как в множестве это всегда O(1).

#типы_данных