Напишите функцию, которая принимает на вход строку и возвращает количество уникальных слов в этой строке. Считайте, что слова разделяются пробелами, знаками препинания должны быть удалены. Напишите код и расскажите, как вы обрабатываете знаки препинания. Какие дополнительные оптимизации можно внести?
Объяснение:
В этом коде (первая картинка) мы используем string.punctuation для определения знаков препинания и str.translate() для удаления их из строки. Затем мы приводим всю строку к нижнему регистру и разбиваем ее на слова, считая количество уникальных слов с использованием множества (set).
Оптимизации (вторая картинка):
Мы могли бы использовать регулярные выражения для более точного удаления знаков препинания и разделения слов. Вместо создания промежуточного списка words, мы могли бы сразу подсчитывать уникальные слова при проходе по строке, что сэкономило бы память.
Разъяснивший Python
Объяснение:
В этом коде (первая картинка) мы используем string.punctuation для определения знаков препинания и str.translate() для удаления их из строки. Затем мы приводим всю строку к нижнему регистру и разбиваем ее на слова, считая количество уникальных слов с использованием множества (set).
Оптимизации (вторая картинка):
Мы могли бы использовать регулярные выражения для более точного удаления знаков препинания и разделения слов. Вместо создания промежуточного списка words, мы могли бы сразу подсчитывать уникальные слова при проходе по строке, что сэкономило бы память.
Разъяснивший Python
memoryview()
Этот инструмент особенно полезен, когда вам нужно работать с большим объемом данных, и вы хотите избежать копирования данных, что может быть затратным с точки зрения времени
Разъяснивший Python
memoryview()
в Python предоставляет объект для доступа к внутреннему представлению данных в виде буфера без копирования. Этот объект позволяет вам просматривать байты объекта, не копируя их, а также выполнять различные операции на уровне байтов.memoryview()
также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python.Этот инструмент особенно полезен, когда вам нужно работать с большим объемом данных, и вы хотите избежать копирования данных, что может быть затратным с точки зрения времени
Разъяснивший Python
❤1
Метод getitem
Метод
Этот метод также используется при работе с срезами. Если вы хотите, чтобы ваш объект поддерживал срезы, вы также можете реализовать метод
Разъяснивший Python
Метод
__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
Объяснение:
Алгоритм поиска в ширину (BFS) используется для обхода или поиска в графе. Он начинает с выбора стартовой вершины и пошагово распространяется по всем смежным вершинам.
Шаги алгоритма:
1. Создается пустое множество visited для отслеживания посещенных вершин и очередь queue для управления порядком обхода.
2. Стартовая вершина добавляется в очередь и отмечается как посещенная.
3. Пока очередь не пуста, извлекается вершина из начала очереди (queue.popleft()).
4. Выводится значение текущей вершины и добавляются в очередь все её смежные вершины, которые еще не были посещены.
5. Шаги 3-4 повторяются до тех пор, пока очередь не опустеет.
Разъяснивший Python
frozenset
Вот несколько ключевых особенностей
Неизменяемость: Это означает, что вы не можете добавлять, удалять или изменять элементы в
Хешируемость: Поскольку
Обратите внимание, что, поскольку
Разъяснивший Python
frozenset
представляет собой неизменяемое множество. Основное отличие между set
и frozenset
заключается в том, что set является изменяемым типом данных, тогда как frozenset
не может быть изменен после создания.Вот несколько ключевых особенностей
frozenset
:Неизменяемость: Это означает, что вы не можете добавлять, удалять или изменять элементы в
frozenset
после его создания.Хешируемость: Поскольку
frozenset
неизменяем, он является хешируемым, что означает, что его можно использовать в качестве ключа в словарях и элемента множества.Обратите внимание, что, поскольку
frozenset
не поддерживает изменения, некоторые методы, которые изменяют множество (например, add
, remove
, discard
), не применимы к frozenset
. Однако, вы можете выполнять операции, возвращающие новые frozenset
, такие как объединение и пересечение.Разъяснивший Python
Метод count()
Метод count() возвращает количество раз, когда указанный элемент появляется в списке. В качестве элемента ты можешь использовать строку, число, список, кортеж и многое другое.
Разъяснивший Python
Метод count() возвращает количество раз, когда указанный элемент появляется в списке. В качестве элемента ты можешь использовать строку, число, список, кортеж и многое другое.
Разъяснивший Python
❤2
Функция enumerate()
Функция enumerate() добавляет счетчик к итерируемому объекту и возвращает данный объект. При необходимости ты можешь указать, с какого числа начинать отсчет. По умолчанию значение 0.
Разъяснивший Python
Функция enumerate() добавляет счетчик к итерируемому объекту и возвращает данный объект. При необходимости ты можешь указать, с какого числа начинать отсчет. По умолчанию значение 0.
Разъяснивший Python
Ruff
Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.
Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».
Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.
Разъяснивший Python
Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.
Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».
Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.
Разъяснивший Python
🔥3
Функция len()
Функция len() возвращает количество элементов (длину) в объекте. Если невозможно передать аргумент, либо передается недопустимый аргумент, вызывается исключение TypeError.
Разъяснивший Python
Функция len() возвращает количество элементов (длину) в объекте. Если невозможно передать аргумент, либо передается недопустимый аргумент, вызывается исключение TypeError.
Разъяснивший Python
❤3🤣2🗿2
Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.
Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:
Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.
Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).
Разъяснивший Python
Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:
Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.
Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).
Разъяснивший Python
🤡1
Метод swapcase()
Метод swapcase() в Python является встроенным методом строк (str), который создает новую строку, меняя регистр каждой буквы в исходной строке. Если буква была в верхнем регистре, она будет преобразована в нижний регистр, и наоборот.
Результатом будет строка 'hELLO, wORLD!'.
Разъяснивший Python
Метод swapcase() в Python является встроенным методом строк (str), который создает новую строку, меняя регистр каждой буквы в исходной строке. Если буква была в верхнем регистре, она будет преобразована в нижний регистр, и наоборот.
Результатом будет строка 'hELLO, wORLD!'.
Разъяснивший Python
👍1
Метод replace()
Метод replace() заменяет каждое соответствующее вхождение подстроки другой строкой. При необходимости ты можешь задать, сколько раз ты хочешь заменить исходную строку новой строкой. Если не указывать данное число, заменятся все вхождения.
Разъяснивший Python
Метод replace() заменяет каждое соответствующее вхождение подстроки другой строкой. При необходимости ты можешь задать, сколько раз ты хочешь заменить исходную строку новой строкой. Если не указывать данное число, заменятся все вхождения.
Разъяснивший Python
🆒3👍1
Метод isnumeric()
Метод isnumeric() проверяет, все ли символы в строке являются числовыми. Возвращает True, если все символы являются числовыми. В противном случае – False. В данном примере для symbol number возвращается True, так как “012345” являются числами. Для text возвращается False.
Разъяснивший Python
Метод isnumeric() проверяет, все ли символы в строке являются числовыми. Возвращает True, если все символы являются числовыми. В противном случае – False. В данном примере для symbol number возвращается True, так как “012345” являются числами. Для text возвращается False.
Разъяснивший Python
👍4🥱3
Метод difference update()
Метод difference update() вычисляет разницу между двумя множествами (A – B). В результате множество A обновляется полученным множеством. В данном примере продемонстрировано применение метода.
Разъяснивший Python
Метод difference update() вычисляет разницу между двумя множествами (A – B). В результате множество A обновляется полученным множеством. В данном примере продемонстрировано применение метода.
Разъяснивший Python
👍2
Функция compress
Функция compress из itertools используется для фильтрации элементов входной последовательности на основе соответствующих элементов булевой последовательности.
Код с картинки создает новый список, включающий только элементы data, для которых соответствующее значение в selectors является True. В данном случае результат будет [1, 3, 5].
Разъяснивший Python
Функция compress из itertools используется для фильтрации элементов входной последовательности на основе соответствующих элементов булевой последовательности.
Код с картинки создает новый список, включающий только элементы data, для которых соответствующее значение в selectors является True. В данном случае результат будет [1, 3, 5].
Разъяснивший Python
👍3❤1🔥1
Альфа-банк заплатит вам 8500 рублей, за открытие банковского счета
• Сбер начислит 40% кэшбек на ВСЕ покупки. Достаточно ввести промокод сотрудника (коды) в Сбермаркете.
• А у банка «Тинькофф» есть акция — клеишь наклейку на машину или ноутбук и получаешь 4000 ₽/мес
Российские банки - не паханное поле халявы. И если вы не хотите тратить десятки часов на их поиски вручную – подпишитесь на Банкистар
Там сами сотрудники сливают все скрытые спецтарифы банков и показывают, как получать с них 50-70 тыс. в месяц, ничего не делая.
Если хотите пассивный заработок хотя бы сотку в месяц, точно подпишитесь: @bankistar
• Сбер начислит 40% кэшбек на ВСЕ покупки. Достаточно ввести промокод сотрудника (коды) в Сбермаркете.
• А у банка «Тинькофф» есть акция — клеишь наклейку на машину или ноутбук и получаешь 4000 ₽/мес
Российские банки - не паханное поле халявы. И если вы не хотите тратить десятки часов на их поиски вручную – подпишитесь на Банкистар
Там сами сотрудники сливают все скрытые спецтарифы банков и показывают, как получать с них 50-70 тыс. в месяц, ничего не делая.
Если хотите пассивный заработок хотя бы сотку в месяц, точно подпишитесь: @bankistar
🔥1
Метод math.perm()
Метод math.perm() в Python возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.
Синтаксис:
Где:
В первом примере метод возвращает количество способов выбрать 3 элемента из 5 элементов. В результате получается 60 способов.
Во втором примере метод возвращает количество способов выбрать 5 элементов из 10 элементов. В результате получается 252 способа.
Разъяснивший Python
Метод 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 года.
Список профессий участвующих в акции:
Интернет-маркетолог (зп 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 года.