Разъяснивший Python – Telegram
Разъяснивший Python
7.69K subscribers
2.8K photos
40 videos
30 files
2.68K links
Твой проводник в омут Python'а

Ссылка: @Portal_v_IT

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

Канал на бирже: https://telega.in/c/python_pssss
Download Telegram
Общие свойства объектов (ч.2)

str(self) — вызывается при вызове функции str(...), возвращает строковый объект.

Разъяснивший Python | ChatGPT
whylogs

whylogs — это библиотека для профилирования и анализа данных в Python. Она предоставляет средства для сбора статистики о данных, визуализации этой статистики и создания профилей данных для мониторинга и анализа.

Разъяснивший Python | ChatGPT
writable()

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

Разъяснивший Python | ChatGPT
Создание последовательностей (ч.2)

getitem(self, key) — вызывается при обращении к элементу в последовательности по его ключу (индексу). Метод должен выбрасывать исключение TypeError, если используется некорректный тип ключа, KeyError, если данному ключу не соответствует ни один элемент в последовательности.

Разъяснивший Python | ChatGPT
👍1
Поиск максимальной прибыли

Дан целочисленный массив prices, где prices[i] - это цена данной акции на i-й день. В каждый день вы можете принять решение о покупке и/или продаже акции. В любой момент времени вы можете держать не более одной акции. Однако вы можете купить ее и тут же продать в тот же день. Найдите и верните максимальную прибыль, которую вы можете получить.

Решение работает следующим образом: в методе maxProfit создаем пустой список price_gain, который будет хранить прибыль от каждой сделки. Проходим по списку цен и для каждой пары соседних цен проверяем, если цена на следующий день выше, чем цена на текущий день. Если это так, то вычисляем разницу между этими ценами и добавляем ее в price_gain. В конце возвращаем сумму всех элементов price_gain - это и будет максимальная прибыль.

Разъяснивший Python | ChatGPT
👍2
Сортировка списков

В
Python есть два способа сортировки списка: встроенный метод списка list.sort() и встроенная функция sorted(). Вот в чем заключается их отличие:

- Функция sorted() принимает итерируемый объект и возвращает новый отсортированный список, не изменяя исходный.
- Метод list.sort() сортирует список на месте, то есть изменяет исходный список.

Разъяснивший Python | ChatGPT
Прыжки по массиву

Дан целочисленный массив nums. Изначально вы располагаетесь на первом индексе массива, и каждый элемент массива представляет собой максимальную длину вашего прыжка на этой позиции.
Возвращается true, если вы можете достичь последнего индекса, или false в противном случае.

Решение: создаем переменную farthest, которая будет хранить самый дальний индекс, до которого можно добраться. Затем проходим по nums и для каждого элемента проверяем, можно ли добраться до него из текущего положения (if i > farthest):
- Если это невозможно, то алгоритм возвращает False, так как мы не можем добраться до последнего элемента.
- Если это возможно, то алгоритм обновляет значение переменной farthest, если текущий элемент позволяет добраться дальше (if nums[i] + i > farthest).
- Если значение переменной farthest больше или равно индексу последнего элемента списка, то алгоритм возвращает True, так как мы можем добраться до последнего элемента.

Разъяснивший Python | ChatGPT
2
Декоратор @classmethod

Декоратор @classmethod используется для создания методов класса. Метод класса — это метод, который привязан к классу, а не к его экземпляру. Это означает, что вы можете вызвать метод класса на самом классе, а не на его экземпляре.

Один из распространенных способов использования методов класса — это создание фабричных методов, которые возвращают новые экземпляры класса.

В этом примере мы определяем класс MyClass с методом __init__, который принимает один аргумент value. Затем определяем метод класса from_string, который принимает строку и преобразует ее в целое число с помощью функции int. Метод возвращает новый экземпляр класса MyClass, созданный с помощью переданного значения.

Метод класса определяется с помощью декоратора @classmethod и принимает первым аргументом ссылку на сам класс (обычно называемую cls). Внутри метода мы используем эту ссылку для создания и возврата нового экземпляра класса.

Разъяснивший Python | ChatGPT
Создание последовательностей (ч.3)

setitem(self, key, value) — вызывается при присваивании какого-либо значения элементу в последовательности. Также может выбрасывать исключения TypeError и KeyError.

Разъяснивший Python | ChatGPT
Дано целое число, преобразовать его в римскую цифру.

В этом решении мы создаем метод intToRoman, который принимает целое число в качестве аргумента и возвращает его римское представление в виде строки.

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

Разъяснивший Python | ChatGPT
1
Starlette

Starlette
— это легковесный ASGI фреймворк/набор инструментов, который идеально подходит для создания асинхронных веб-сервисов на Python.
Он готов к использованию в продакшене и предлагает следующие возможности:
- легковесный, низкосложный HTTP веб-фреймворк;
- поддержка WebSocket;
- фоновые задачи в процессе;
- события запуска и остановки;
- тестовый клиент, построенный на httpx.

В этом примере создается приложение Starlette с одним маршрутом, который обрабатывается функцией homepage. Эта функция возвращает JSON-ответ с сообщением “Hello, world”.

Чтобы запустить это приложение, необходимо установить ASGI-сервер, например uvicorn, и выполнить следующую команду: uvicorn example:app, где example — это имя файла с кодом приложения, а app — имя переменной с экземпляром приложения Starlette.

Разъяснивший Python | ChatGPT
👍2💩1
Дана входная строка s, необходимо изменить порядок слов в строке на противоположный.

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

Чтобы решить данную задачу нам необходимо:
- Удалить начальные и конечные пробелы, а также уменьшить количество пробелов между словами до одного.
- Разбить строку на отдельные слова и сохранить в списке.
- Поменять порядок слов в списке на обратный с помощью метода reverse().
- Объединить слова в строку, разделенную одним пробелом, и вернуть результат.

Разъяснивший Python | ChatGPT
2
Генерируем фейковый профиль человека

С помощью метода profile пакета Faker мы с легкостью может получить информацию о несуществующем человеке.

Документацию можно найти здесь.

Разъяснивший Python | ChatGPT
List и Tuple — зачем нужны и какие отличия

List
и Tupleэто два основных типа данных для хранения последовательностей.

List (список) — изменяемый тип данных, можно добавлять, удалять и изменять элементы.
Tuple (кортеж) — неизменяемый тип данных, элементы нельзя изменить после создания.

Основные отличия:
- Списки изменяемые, кортежи - нет;
- Списки удобнее для добавления/удаления элементов;
- Кортежи более эффективны по памяти и быстрее для доступа к элементам.

Для хранения постоянных данных лучше использовать кортежи, а для изменяемых данных — списки.

Разъяснивший Python | ChatGPT
👍1
Дан целочисленный массив nums, вернуть [nums[i], nums[j], nums[k]] такие, что nums[i] + nums[j] + nums[k] == 0.

В нашем решении сначала список nums сортируется. Затем перебираются все возможные комбинации индексов i, j и k. Их сумма проверяется на равенство target и добавляется в результирующий сет, если равна.

Разъяснивший Python | ChatGPT
seekable()

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

Разъяснивший Python | ChatGPT
Глубокое копирование (deep copy)

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

Когда мы вызываем глубокое копирование, происходит следующее:
- Создается новый контейнерный объект (список, словарь и т. д.);
- Для каждого элемента исходного объекта рекурсивно вызывается глубокое копирование:
- Если элемент является изменяемым объектом (списком, словарем), то создается его копия с рекурсивным копированием вложенных элементов;
- Если элемент неизменяемый (число, строка) - он просто копируется как есть;
- Копии вложенных объектов вставляются в копию исходного объекта.

Разъяснивший Python | ChatGPT
Унарные операторы (ч.1)

В данном примере класс Number реализует метод neg(self), который переопределяет оператор отрицания - для объектов этого класса. Когда мы используем оператор отрицания для объекта num, Python вызывает метод neg для этого объекта, который возвращает новый объект Number с отрицательным значением атрибута value.

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

Разъяснивший Python | ChatGPT
🔥1
Унарные операторы (ч.2)

Метод pos(self) в Python вызывается при использовании унарного оператора плюс (+) для объекта. Он позволяет определить поведение объекта при применении унарного плюса к нему.

В данном примере метод pos просто возвращает сам объект без изменений. Это позволяет объекту сохранять своё значение при использовании унарного плюса. Несмотря на то, что в этом примере метод pos не вносит никаких изменений, он может быть полезен для реализации специфического поведения в других контекстах.

Разъяснивший Python
| ChatGPT
Унарные операторы (ч.4)

Метод invert(self) в Python вызывается при использовании побитового отрицания ~ для объекта. Он позволяет определить поведение объекта при побитовом инвертировании его значений.

В приведенном примере метод invert просто использует побитовое отрицание ~ для атрибута self.value, что позволяет инвертировать биты числа.

Этот лайфхак полезен при работе с побитовыми операциями, такими как побитовое отрицание, побитовое ИЛИ, И и т. д. Переопределение метода invert позволяет объекту поддерживать более сложные операции с битами, что может быть полезно при работе с битовыми представлениями данных или при написании кода, связанного с низкоуровневыми аспектами.

Разъяснивший Python | ChatGPT
👍1
Statistics

Библиотека statistics предназначена для вычисления различных статистических характеристик наборов данных.

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

В примере мы вычисляем среднее значение элементов списка data.
Функция mean() принимает последовательность чисел, суммирует их и делит на количество элементов.

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