memoryview()
Этот инструмент особенно полезен, когда вам нужно работать с большим объемом данных, и вы хотите избежать копирования данных, что может быть затратным с точки зрения времени и ресурсов.
#для_начинающих
memoryview()
в Python предоставляет объект для доступа к внутреннему представлению данных в виде буфера без копирования. Этот объект позволяет вам просматривать байты объекта, не копируя их, а также выполнять различные операции на уровне байтов.memoryview()
также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python.Этот инструмент особенно полезен, когда вам нужно работать с большим объемом данных, и вы хотите избежать копирования данных, что может быть затратным с точки зрения времени и ресурсов.
#для_начинающих
👍21❤🔥2😱1🎉1
Метод __getitem__
Метод
Этот метод также используется при работе с срезами. Если вы хотите, чтобы ваш объект поддерживал срезы, вы также можете реализовать метод
#для_начинающих
Метод
__getitem__
является частью протокола индексации, который позволяет объекту быть индексируемым, как это делается, например, для списков или словарей. Этот метод вызывается при использовании квадратных скобок []
для доступа к элементам объекта.Этот метод также используется при работе с срезами. Если вы хотите, чтобы ваш объект поддерживал срезы, вы также можете реализовать метод
__getitem__
с тремя аргументами: self
, start
, stop
.#для_начинающих
👍16🎉3❤🔥1
#Вопросы_с_собеседования
Реализуйте алгоритм поиска в ширину (BFS - Breadth-First Search) для графа на Python. Напишите код и объясните, как работает этот алгоритм. Обсудите его сложность и применение.
Объяснение:
Алгоритм поиска в ширину (BFS) используется для обхода или поиска в графе. Он начинает с выбора стартовой вершины и пошагово распространяется по всем смежным вершинам.
Шаги алгоритма:
1. Создается пустое множество
2. Стартовая вершина добавляется в очередь и отмечается как посещенная.
3. Пока очередь не пуста, извлекается вершина из начала очереди (
4. Выводится значение текущей вершины и добавляются в очередь все её смежные вершины, которые еще не были посещены.
5. Шаги 3-4 повторяются до тех пор, пока очередь не опустеет.
Сложность:
Временная сложность: O(V + E), где V — количество вершин, E — количество ребер в графе.
Пространственная сложность: O(V), так как используется множество для отслеживания посещенных вершин.
Применение:
BFS применяется в задачах поиска кратчайших путей в невзвешенных графах.
Он также используется в задачах, связанных с обходом графов, например, в нахождении компонент связности.
Реализуйте алгоритм поиска в ширину (BFS - Breadth-First Search) для графа на Python. Напишите код и объясните, как работает этот алгоритм. Обсудите его сложность и применение.
Объяснение:
Алгоритм поиска в ширину (BFS) используется для обхода или поиска в графе. Он начинает с выбора стартовой вершины и пошагово распространяется по всем смежным вершинам.
Шаги алгоритма:
1. Создается пустое множество
visited
для отслеживания посещенных вершин и очередь queue для управления порядком обхода.2. Стартовая вершина добавляется в очередь и отмечается как посещенная.
3. Пока очередь не пуста, извлекается вершина из начала очереди (
queue.popleft()
).4. Выводится значение текущей вершины и добавляются в очередь все её смежные вершины, которые еще не были посещены.
5. Шаги 3-4 повторяются до тех пор, пока очередь не опустеет.
Сложность:
Временная сложность: O(V + E), где V — количество вершин, E — количество ребер в графе.
Пространственная сложность: O(V), так как используется множество для отслеживания посещенных вершин.
Применение:
BFS применяется в задачах поиска кратчайших путей в невзвешенных графах.
Он также используется в задачах, связанных с обходом графов, например, в нахождении компонент связности.
👍14
frozenset
Вот несколько ключевых особенностей
Неизменяемость: Это означает, что вы не можете добавлять, удалять или изменять элементы в
Хешируемость: Поскольку
Обратите внимание, что, поскольку
#для_начинающих
frozenset
представляет собой неизменяемое множество. Основное отличие между set
и frozenset
заключается в том, что set является изменяемым типом данных, тогда как frozenset
не может быть изменен после создания.Вот несколько ключевых особенностей
frozenset
:Неизменяемость: Это означает, что вы не можете добавлять, удалять или изменять элементы в
frozenset
после его создания.Хешируемость: Поскольку
frozenset
неизменяем, он является хешируемым, что означает, что его можно использовать в качестве ключа в словарях и элемента множества.Обратите внимание, что, поскольку
frozenset
не поддерживает изменения, некоторые методы, которые изменяют множество (например, add
, remove
, discard
), не применимы к frozenset
. Однако, вы можете выполнять операции, возвращающие новые frozenset
, такие как объединение и пересечение.#для_начинающих
👍18
Ruff
Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.
Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».
Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.
Документация лежит здесь.
#для_продвинутых
Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.
Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».
Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.
Документация лежит здесь.
#для_продвинутых
👍22
🤔18👍7🥰2🎉1
#Вопросы_с_собеседования
Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.
Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:
Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.
Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).
Оптимизации:
— При реализации можно использовать вставочную сортировку для маленьких подмассивов, так как у нее меньшая константа в асимптотике.
— Если массив уже отсортирован, можно добавить проверку и пропустить шаг сортировки.
— Вместо копирования подмассивов при каждом рекурсивном вызове можно использовать вспомогательный массив для слияния, что уменьшит использование памяти.
Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.
Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:
Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.
Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).
Оптимизации:
— При реализации можно использовать вставочную сортировку для маленьких подмассивов, так как у нее меньшая константа в асимптотике.
— Если массив уже отсортирован, можно добавить проверку и пропустить шаг сортировки.
— Вместо копирования подмассивов при каждом рекурсивном вызове можно использовать вспомогательный массив для слияния, что уменьшит использование памяти.
👍15😁1
Метод swapcase()
Метод
Результатом будет строка 'hELLO, wORLD!'.
#для_начинающих
Метод
swapcase()
в Python является встроенным методом строк (str), который создает новую строку, меняя регистр каждой буквы в исходной строке. Если буква была в верхнем регистре, она будет преобразована в нижний регистр, и наоборот.Результатом будет строка 'hELLO, wORLD!'.
#для_начинающих
👍25❤🔥3🎉1
Пишем приложение на Python для подготовки к собеседованиям по Python
На конец 2023 года язык программирования Python является самым популярным по индексу TIOBE.
Смотреть статью
На конец 2023 года язык программирования Python является самым популярным по индексу TIOBE.
Смотреть статью
Хабр
Пишем приложение на Python для подготовки к собеседованиям по Python
На конец 2023 года язык программирования Python является самым популярным по индексу TIOBE. Что касается работы, то по количеству вакансий в мире язык Python занимает второе место (после...
👍16❤🔥1🔥1🎉1
Функция compress
Функция
Код с картинки создает новый список, включающий только элементы
#для_начинающих
Функция
compress
из itertools
используется для фильтрации элементов входной последовательности на основе соответствующих элементов булевой последовательности.Код с картинки создает новый список, включающий только элементы
data
, для которых соответствующее значение в selectors
является True
. В данном случае результат будет [1, 3, 5]
.#для_начинающих
👍24❤🔥1🔥1🎉1
Метод math.perm()
Метод math.perm() в Python возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.
Синтаксис:
Где:
В первом примере метод возвращает количество способов выбрать 3 элемента из 5 элементов. В результате получается 60 способов.
Во втором примере метод возвращает количество способов выбрать 5 элементов из 10 элементов. В результате получается 252 способа.
#для_начинающих
Метод math.perm() в Python возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.
Синтаксис:
math.perm(n, k)
Где:
n
: Количество элементов из которых выбираются k
элементов.k
: Количество элементов, которые выбираются.В первом примере метод возвращает количество способов выбрать 3 элемента из 5 элементов. В результате получается 60 способов.
Во втором примере метод возвращает количество способов выбрать 5 элементов из 10 элементов. В результате получается 252 способа.
#для_начинающих
👍14❤🔥3🎉2
Сцепление исключений
Сцепление исключений (exception chaining) позволяет сохранять информацию об исключении, которое произошло во вложенном блоке кода, в исключении более высокого уровня. Это полезно для отслеживания причин ошибок и обеспечения более полной информации о том, что произошло.
В примере на картинке, если возникает
#для_продвинутых
Сцепление исключений (exception chaining) позволяет сохранять информацию об исключении, которое произошло во вложенном блоке кода, в исключении более высокого уровня. Это полезно для отслеживания причин ошибок и обеспечения более полной информации о том, что произошло.
В примере на картинке, если возникает
ZeroDivisionError
, мы попадаем в блок except
, а затем выполняем вложенный код, который вызывает ValueError
. С помощью ключевого слова from
мы указываем, что исключение ValueError
является следствием (частью) исключения ZeroDivisionError
. Таким образом, информация об исключении ZeroDivisionError
сохраняется.#для_продвинутых
👍19
Функция sample()
Функция
#для_начинающих
Функция
sample()
модуля random
в Python возвращает случайную выборку элементов из последовательности. В первом параметре функции указываем последовательность, во втором параметре — количество элементов, которые мы хотим выбрать случайным образом.#для_начинающих
👍35
Функция tell()
Функция
Возвращаемое значение: целое число, указывающее положение указателя в байтах от начала потока.
Аргументы:
#для_начинающих
Функция
tell()
используется для получения текущей позиции указателя в потоке данных. Она применяется чаще всего при работе с файлами, но также может использоваться с другими типами потоков, например, сокетами или консольным вводом.Возвращаемое значение: целое число, указывающее положение указателя в байтах от начала потока.
Аргументы:
tell()
не принимает никаких аргументов.#для_начинающих
👍23
PyBrain
PyBrain — это библиотека машинного обучения, которая предоставляет широкий набор алгоритмов и инструментов для обучения нейросетей и других задач машинного обучения.
PyBrain имеет ряд преимуществ, которые делают его привлекательным для разработчиков машинного обучения:
— Простота использования: PyBrain имеет простой и понятный синтаксис, который делает его удобным для изучения.
— Модульность: PyBrain является модульной библиотекой, что позволяет разработчикам создавать собственные алгоритмы и инструменты.
— Производительность: PyBrain написан на Python, который является высокопроизводительным языком.
PyBrain может использоваться для решения широкого спектра задач машинного обучения, включая:
— Классификация: обучение нейронной сети для классификации входных данных в один из нескольких классов.
— Регрессия: обучение нейронной сети для прогнозирования непрерывных значений.
— Обнаружение аномалий: обучение нейронной сети для обнаружения аномальных входных данных.
#для_пролвинутых
PyBrain — это библиотека машинного обучения, которая предоставляет широкий набор алгоритмов и инструментов для обучения нейросетей и других задач машинного обучения.
PyBrain имеет ряд преимуществ, которые делают его привлекательным для разработчиков машинного обучения:
— Простота использования: PyBrain имеет простой и понятный синтаксис, который делает его удобным для изучения.
— Модульность: PyBrain является модульной библиотекой, что позволяет разработчикам создавать собственные алгоритмы и инструменты.
— Производительность: PyBrain написан на Python, который является высокопроизводительным языком.
PyBrain может использоваться для решения широкого спектра задач машинного обучения, включая:
— Классификация: обучение нейронной сети для классификации входных данных в один из нескольких классов.
— Регрессия: обучение нейронной сети для прогнозирования непрерывных значений.
— Обнаружение аномалий: обучение нейронной сети для обнаружения аномальных входных данных.
#для_пролвинутых
👍21🤔2❤🔥1
Fugue
Fugue — это фреймворк Python для создания рабочих процессов Google Cloud Composer. Он предоставляет набор инструментов и библиотек, которые упрощают разработку, развертывание и управление рабочими процессами в Google Cloud.
Чтобы использовать Fugue в Python, необходимо сначала установить его с помощью pip:
После установки можно начать создавать рабочие процессы. Рабочие процессы в Fugue представляют собой набор задач, которые выполняются последовательно или параллельно. Задачи могут быть простыми, такими как запуск команды или загрузка данных, или сложными, такими как выполнение машинного обучения или анализа данных.
Код на картинке создает задачу, которая запускает команду
#для_продвинутых
Fugue — это фреймворк Python для создания рабочих процессов Google Cloud Composer. Он предоставляет набор инструментов и библиотек, которые упрощают разработку, развертывание и управление рабочими процессами в Google Cloud.
Чтобы использовать Fugue в Python, необходимо сначала установить его с помощью pip:
pip install fuga
После установки можно начать создавать рабочие процессы. Рабочие процессы в Fugue представляют собой набор задач, которые выполняются последовательно или параллельно. Задачи могут быть простыми, такими как запуск команды или загрузка данных, или сложными, такими как выполнение машинного обучения или анализа данных.
Код на картинке создает задачу, которая запускает команду
echo
.#для_продвинутых
👍11
Voluptuous
Voluptuous — это библиотека Python для проверки данных. Она позволяет создавать схемы данных, которые определяют допустимые значения для различных полей данных. Voluptuous можно использовать для проверки данных, полученных от пользователей, из API или из других источников.
Для использования Voluptuous необходимо сначала импортировать библиотеку:
#для_продвинутых
Voluptuous — это библиотека Python для проверки данных. Она позволяет создавать схемы данных, которые определяют допустимые значения для различных полей данных. Voluptuous можно использовать для проверки данных, полученных от пользователей, из API или из других источников.
Для использования Voluptuous необходимо сначала импортировать библиотеку:
import voluptuous as v
#для_продвинутых
👍17