Разъяснивший Python
8.17K subscribers
2.44K photos
40 videos
30 files
2.29K links
Твой проводник в омут Python'а

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/python_pssss
Download Telegram
Напишите функцию, которая принимает на вход строку и возвращает количество уникальных слов в этой строке. Считайте, что слова разделяются пробелами, знаками препинания должны быть удалены. Напишите код и расскажите, как вы обрабатываете знаки препинания. Какие дополнительные оптимизации можно внести?

Объяснение:
В этом коде (первая картинка) мы используем string.punctuation для определения знаков препинания и str.translate() для удаления их из строки. Затем мы приводим всю строку к нижнему регистру и разбиваем ее на слова, считая количество уникальных слов с использованием множества (set).

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

Разъяснивший Python
memoryview()

memoryview() в Python предоставляет объект для доступа к внутреннему представлению данных в виде буфера без копирования. Этот объект позволяет вам просматривать байты объекта, не копируя их, а также выполнять различные операции на уровне байтов.

memoryview() также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python.

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

Разъяснивший Python
1
Метод getitem

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

Этот метод также используется при работе с срезами. Если вы хотите, чтобы ваш объект поддерживал срезы, вы также можете реализовать метод __getitem__ с тремя аргументами: self, start, stop.

Разъяснивший Python
1
Реализуйте алгоритм поиска в ширину (BFS - Breadth-First Search) для графа на Python. Напишите код и объясните, как работает этот алгоритм. Обсудите его сложность и применение.

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

Шаги алгоритма:
1. Создается пустое множество visited для отслеживания посещенных вершин и очередь queue для управления порядком обхода.
2. Стартовая вершина добавляется в очередь и отмечается как посещенная.
3. Пока очередь не пуста, извлекается вершина из начала очереди (queue.popleft()).
4. Выводится значение текущей вершины и добавляются в очередь все её смежные вершины, которые еще не были посещены.
5. Шаги 3-4 повторяются до тех пор, пока очередь не опустеет.

Разъяснивший Python
frozenset

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

Вот несколько ключевых особенностей frozenset:

Неизменяемость: Это означает, что вы не можете добавлять, удалять или изменять элементы в frozenset после его создания.
Хешируемость: Поскольку frozenset неизменяем, он является хешируемым, что означает, что его можно использовать в качестве ключа в словарях и элемента множества.

Обратите внимание, что, поскольку frozenset не поддерживает изменения, некоторые методы, которые изменяют множество (например, add, remove, discard), не применимы к frozenset. Однако, вы можете выполнять операции, возвращающие новые frozenset, такие как объединение и пересечение.

Разъяснивший Python
Метод count()

Метод count() возвращает количество раз, когда указанный элемент появляется в списке. В качестве элемента ты можешь использовать строку, число, список, кортеж и многое другое.

Разъяснивший Python
2
Функция enumerate()

Функция enumerate() добавляет счетчик к итерируемому объекту и возвращает данный объект. При необходимости ты можешь указать, с какого числа начинать отсчет. По умолчанию значение 0.

Разъяснивший Python
Ruff

Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.

Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».

Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.

Разъяснивший Python
🔥3
Функция len()

Функция len() возвращает количество элементов (длину) в объекте. Если невозможно передать аргумент, либо передается недопустимый аргумент, вызывается исключение TypeError.

Разъяснивший Python
3🤣2🗿2
Функция next()

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

Разъяснивший Python
🔥1
Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.

Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:

Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.

Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).

Разъяснивший Python
🤡1
Метод swapcase()

Метод swapcase() в Python является встроенным методом строк (str), который создает новую строку, меняя регистр каждой буквы в исходной строке. Если буква была в верхнем регистре, она будет преобразована в нижний регистр, и наоборот.

Результатом будет строка 'hELLO, wORLD!'.

Разъяснивший Python
👍1
Метод replace()

Метод replace() заменяет каждое соответствующее вхождение подстроки другой строкой. При необходимости ты можешь задать, сколько раз ты хочешь заменить исходную строку новой строкой. Если не указывать данное число, заменятся все вхождения.

Разъяснивший Python
🆒3👍1
Метод isnumeric()

Метод
isnumeric() проверяет, все ли символы в строке являются числовыми. Возвращает True, если все символы являются числовыми. В противном случае – False. В данном примере для symbol number возвращается True, так как “012345” являются числами. Для text возвращается False.

Разъяснивший Python
👍4🥱3
Метод difference update()

Метод difference update() вычисляет разницу между двумя множествами (A – B). В результате множество A обновляется полученным множеством. В данном примере продемонстрировано применение метода.

Разъяснивший Python
👍2
Функция compress

Функция compress из itertools используется для фильтрации элементов входной последовательности на основе соответствующих элементов булевой последовательности.

Код с картинки создает новый список, включающий только элементы data, для которых соответствующее значение в selectors является True. В данном случае результат будет [1, 3, 5].

Разъяснивший Python
👍31🔥1
Альфа-банк заплатит вам 8500 рублей, за открытие банковского счета

Сбер начислит 40% кэшбек на ВСЕ покупки. Достаточно ввести промокод сотрудника (коды) в Сбермаркете.

• А у банка «Тинькофф» есть акция — клеишь наклейку на машину или ноутбук и получаешь 4000 ₽/мес

Российские банки - не паханное поле халявы. И если вы не хотите тратить десятки часов на их поиски вручную – подпишитесь на Банкистар

Там сами сотрудники сливают все скрытые спецтарифы банков и показывают, как получать с них 50-70 тыс. в месяц, ничего не делая.

Если хотите пассивный заработок хотя бы сотку в месяц, точно подпишитесь: @bankistar
🔥1
Метод math.perm()

Метод math.perm() в Python возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.

Синтаксис:
math.perm(n, k)


Где:
n: Количество элементов из которых выбираются k элементов.
k: Количество элементов, которые выбираются.

В первом примере метод возвращает количество способов выбрать 3 элемента из 5 элементов. В результате получается 60 способов.
Во втором примере метод возвращает количество способов выбрать 5 элементов из 10 элементов. В результате получается 252 способа.

Разъяснивший Python
🤔2
Skillbox дарит 6 месяцев бесплатного обучения интернет-профессиям с гарантией трудоустройства.

Список профессий участвующих в акции:

Интернет-маркетолог (зп 120 000₽)
SMM-маркетолог (зп 150 000₽)
Веб-дизайнер (зп 140 000₽)
Графический дизайнер (зп 80 000₽)
Data Engineer (зп 190 000₽)
Data Analyst (зп 285 000₽)
Data Scientist PRO (зп 200 000₽)
Java-разработчик (зп 150 000₽)
Разработчик игр на Unity (зп 120 000₽)
Тестировщик ПО (зп 165 000₽)

Приобретение обучения гарантирует трудоустройство, или Skillbox вернет деньги!

⚠️Акция действительна только по ссылкам в посте. Срок окончания акции 18 декабря 2023 года.