Pythoner
Open in Telegram
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику. Сотрудничество - @flattys Цены - @serpent_media Канал на бирже: https://telega.in/c/pythonercode
Show more6 610
Subscribers
-224 hours
-147 days
-4130 days
Posts Archive
6 609
🐍collections.Mapping
collections.Mapping — это абстрактный базовый класс, который представляет отображение ключ-значение.
Он наследуется встроенными типами словарей, такими как dict, а также другими типами, которые реализуют схожее поведение, например OrderedDict.
Класс Mapping определяет интерфейс, общий для всех отображений ключ-значение, включая такие методы как keys(), values(), items() и другие.
Это позволяет писать универсальный код, который будет работать с любым типом, реализующим этот интерфейс.
🐍Например, Mapping часто используется вместе с isinstance или issubclass для проверки, является ли объект словарем. Также он полезен при написании функций, которым нужно принимать на вход отображения, но без привязки к конкретному типу как dict. Mapping гарантирует наличие основных методов словаря у переданного объекта.6 609
sets.isuperset()
Функция
sets.isuperset() позволяет проверить, является ли один set подмножеством другого.
Она принимает в качестве аргумента другой set и возвращает boolean значение — True если первый set содержит все элементы второго, и False в противном случае.
Это полезно при работе с множествами для проверки включения, или при проверке покрытия тестами.
Также это используется для проверки включения при работе с данными, чтобы убедиться, что один набор данных полностью покрывает другой по каким-либо критериям.6 609
🔎 Бинарный поиск на примере Python
Бинарный поиск - это эффективный алгоритм поиска элемента в упорядоченном списке данных.
Бинарный поиск основан на принципе "разделяй и властвуй". Он работает следующим образом: сначала мы определяем середину списка и сравниваем искомый элемент с этой серединой. Если элемент равен середине, то поиск завершается успешно. Если элемент меньше середины, то мы продолжаем поиск в левой половине списка. Если элемент больше середины, то мы продолжаем поиск в правой половине списка. Повторяем эти шаги до тех пор, пока не найдем искомый элемент или пока список не будет пустым.
Вот пример реализации бинарного поиска на языке Python:
def binary_search(arr, target):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# Пример использования
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5
result = binary_search(arr, target)
if result != -1:
print("Элемент найден в позиции", result)
else:
print("Элемент не найден")
➕ Преимущества бинарного поиска
Бинарный поиск обладает несколькими преимуществами по сравнению с другими алгоритмами поиска. Во-первых, он имеет временную сложность O(log n), что делает его очень эффективным даже для больших списков данных. Во-вторых, он работает только с упорядоченными списками, что позволяет сократить количество операций поиска. И, наконец, бинарный поиск является универсальным и может быть применен для поиска элементов в любом упорядоченном списке данных.6 609
Распаковка массива
Распаковка массива (iterable unpacking) — это удобный синтаксис для присваивания элементов
iterable объектов (списков, кортежей и т. д.) отдельным переменным.
Основные моменты, которые нужно знать:
— Распаковка производится с помощью звездочки *.
— Количество переменных должно соответствовать количеству элементов в iterable объекте, иначе возникнет ошибка.
— Можно использовать распаковку для пропуска элементов.
— Для сбора оставшихся элементов в список используется конструкция *others.
— Распаковка работает с вложенными списками.
— Формат распаковки можно использовать и при передаче аргументов в функции.6 609
Комплексные числа
Комплексные числа представлены типом данных
complex.
Комплексные числа можно создавать разными способами:
— Используя конструктор complex(a, b), где a — действительная часть, b — мнимая.
— Из вещественного числа, добавив к нему мнимую часть. Например, a + bj.
— Из строкового представления с помощью
complex(string).
С комплексными числами можно выполнять стандартные математические операции.
Для доступа к частям комплексного числа используются атрибуты real и imag.
Встроенные функции abs(), conjugate(), polar() позволяют получить модуль, сопряженное число и представление в тригонометрической форме.6 609
Модуль itertools в Python.
Это удивительный инструмент, который помогает работать с итерациями (повторениями) в Python более эффективно.
⚡️ Основные функции itertools:
1.
count(start, step): Генерирует бесконечную арифметическую прогрессию, начиная с start, с шагом step.
2. cycle(iterable): Бесконечно повторяет элементы из iterable.
3. chain(*iterables): Объединяет несколько итерируемых объектов в один последовательный поток.
4. zip_longest(*iterables, fillvalue=None):
Объединяет элементы из разных итерируемых объектов, даже если их длины различаются, то недостающее количество елментом заполнится заполнителем fillvalue.
🖥 Пример использования:
import itertools
# Создаем бесконечную последовательность с шагом 2
counter = itertools.count(start=10, step=2)
for _ in range(5):
print(next(counter)) # Выведет числа: 10, 12, 14, 16, 18
# Объединяем несколько списков в один последовательный поток
letters = ['a', 'b', 'c']
numbers = [1, 2, 3]
combined = itertools.chain(letters, numbers)
print(list(combined)) # Выведет: ['a', 'b', 'c', 1, 2, 3]
👾 Если вы хотите узнать больше о itertools, рекомендую обратиться к официальной документации.
Успешных экспериментов с итерациями в Python! 🐍 ✨
ставьте 👻 если хотите такое-же рабочее место как на фото6 609
erid: LjN8K5mGv
Привет!
Мы BAUM, российская IT-компания. Наша работа — создавать продвинутые системы хранения данных и прикладной искусственный интеллект. Недавно мы завели аккаунт, где делимся своим опытом, даём советы для успешной карьеры, рассказываем об интересных событиях из нашей жизни и, конечно, публикуем вакансии
Обещаем, что будет очень полезно и совсем не душно – подписывайся!
Реклама. ООО "СХД БАУМ". ИНН 9731024067.
6 609
rembg
Rembg — это библиотека для удаления фона из изображений.
Основные возможности:
— Автоматическое удаление фона с использованием нейросетей.
— Возможность точной настройки для сложных изображений .
— Поддержка изображений разных форматов — JPG, PNG, GIF и др.
Rembg использует модели глубокого обучения, предварительно обученные на больших наборах данных. Это позволяет достичь хороших результатов по удалению фона.
Также библиотека позволяет быстро интегрировать удаление фона в любые проекты на Python, где требуется обработка изображений. Простой API и хорошее качество делают эту библиотеку полезным инструментом для разных задач.
6 609
🔎Разбор
Оператор continue используется в циклах для пропуска итерации в цикле.
Таким образом, пока а<4, у нас просто происходит увеличение этой переменной, а из-за условия, итерация (и код ниже) скипаются.
Далее у нас а станет равно 4. У нас не сработает ни один из if'ов и мы добавим это число 4 в result.
Ну и на след. итерации а == 5, у нас сработает break, который принудительно завершит цикл в той же строке.
Ответ: 4
6 609
💻 Наглядная работа сессии, файлов cookie, JWT, токенов, SSO и OAuth 2.0 на одной диаграмме
Когда вы входите на веб-сайт, возникает необходимость управления вашей учетной записью. Вот как работают разные решения:
💬 Сессия — Сервер сохраняет вашу учетную запись и передает браузеру файл cookie с идентификатором сеанса. Это позволяет серверу отслеживать состояние входа в систему. Но файлы cookie не работают на разных устройствах.
💬 Токен — Ваша учетная запись закодирована в токене, отправленном в браузер. Браузер отправляет этот токен при будущих запросах аутентификации. Хранилище сеансов сервера не требуется. Но токены нуждаются в шифровании/дешифровании.
💬 JWT — Веб-токены JSON стандартизируют токены идентификации, используя цифровые подписи для обеспечения проверки подлинности. Подпись содержится в токене, поэтому сеанс сервера не требуется.
💬 SSO — Система единого входа использует центральную службу аутентификации. Это позволяет одному логину работать на нескольких сайтах.
💬 OAuth2 — Разрешает ограниченный доступ к вашим данным на одном сайте другому сайту без разглашения паролей.
💬 QR-код — Набирающий популярность метод аутентификации. Кодирует случайный токен в QR-код для входа в систему с мобильного устройства. Сканирование кода позволяет войти в систему без ввода пароля.
6 609
Sketch
Sketch — это библиотека для статистического анализа и обработки данных. Она позволяет быстро проводить первичный анализ данных и строить прототипы моделей машинного обучения.
Основные возможности:
— Быстрый и эффективный подсчёт статистик по данным, таких как сумма, среднее, медиана, дисперсия.
— Аппроксимация распределений и плотностей вероятности.
— Вычисление квантилей, сглаживания, гистограмм.
— Тестирование статистических гипотез, оценка p-value.
— Генерация случайных чисел из разных распределений.
Sketch позволяет ускорить статистический анализ данных с помощью простого и интуитивного API и используется для:
— Первичного анализа и визуализации данных.
— Статистических тестов в научных исследованиях.
— Построения прототипов моделей машинного обучения.
— Анализа пользовательских действий и событий.
— Симуляции процессов на основе статистических моделей.
6 609
Humanize
Humanize — это библиотека, которая предоставляет функции для более удобочитаемого форматирования данных.
Основные возможности:
— Преобразование чисел в удобочитаемые строки.
— Форматирование дат и времени в понятные фразы типа "3 дня назад".
— Преобразование идентификаторов в удобные для чтения слоги.
— Сокращение длинных строк по словам для компактного отображения.
Humanize полезен в приложениях, где нужно отображать данные в интерфейсе:
— Веб-приложения для отображения статистики.
— Информационные табло и панели мониторинга.
— Системы аналитики для визуализации данных.
— CLI-интерфейсы для вывода данных пользователю.
Использование Humanize позволяет сделать отображение данных более естественным и понятным для человека. Это улучшает user experience приложения.
6 609
Деструкторы
Деструкторы используются для освобождения ресурсов, занятых объектом, перед уничтожением самого объекта.
Деструктор определяется методом
__del__() в классе и вызывается, когда счетчик ссылок на объект достигает нуля.
Используется в основном для закрытия файлов, подключений к БД.
Применение деструкторов ограничено в связи с наличием сборщика мусора. Их стоит использовать только когда нужно правильно освободить внешние ресурсы, например файлы.6 609
🔵Комбинируйте словарные значения
Defaultdict — это подкласс класса словаря, который возвращает объект, подобный словарю. Чем это отличается от обычного словаря? Хотя словарь и словарь по умолчанию почти идентичны, последний позволяет нам избежать KeyErrors. Другими словами, он предоставляет значение по умолчанию для несуществующего ключа. Эта характеристика defaultdictionary упрощает следующие операции.
6 609
tell()
Метод
tell() используется для получения текущей позиции (смещения) при работе с файлами и файлоподобными объектами.
При открытии файла указатель текущей позиции находится в начале. По мере чтения/записи он смещается.
Чтобы узнать текущее значение этого смещения, применяется метод tell().
Это позволяет:
— Узнать размер файла, сравнив позицию после чтения с начальной.
— Вернуться к определенной позиции с помощью seek().
— Отслеживать прогресс обработки больших файлов.
— Получить позицию в строковых буферах и потоках байтов.
Метод tell() возвращает текущую позицию в файле в байтах от начала.