Генераторные фунции (generator functions)
Если предикатов фильтрации или обработчиков элементов списка много, то удобнее использовать генераторы. Они могут не дать прироста скорости, но помогут сэкономить память.
Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield.
Разъяснивший Python | ChatGPT
Если предикатов фильтрации или обработчиков элементов списка много, то удобнее использовать генераторы. Они могут не дать прироста скорости, но помогут сэкономить память.
Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield.
Разъяснивший Python | ChatGPT
Общие свойства объектов (ч.1)
Любой объект может содержать дополнительную информацию, полезную при отладке или приведении типов.
Разъяснивший Python | ChatGPT
Любой объект может содержать дополнительную информацию, полезную при отладке или приведении типов.
repr(self) — информационная строка об объекте. Выводится при вызове функции repr(...) или в момент отладки.Разъяснивший Python | ChatGPT
Общие свойства объектов (ч.2)
Разъяснивший Python | ChatGPT
str(self) — вызывается при вызове функции str(...), возвращает строковый объект.Разъяснивший Python | ChatGPT
whylogs
whylogs — это библиотека для профилирования и анализа данных в Python. Она предоставляет средства для сбора статистики о данных, визуализации этой статистики и создания профилей данных для мониторинга и анализа.
Разъяснивший Python | ChatGPT
whylogs — это библиотека для профилирования и анализа данных в Python. Она предоставляет средства для сбора статистики о данных, визуализации этой статистики и создания профилей данных для мониторинга и анализа.
Разъяснивший Python | ChatGPT
writable()
Метод writable() проверяет, разрешен ли доступ на запись к файлу или потоку. Он особенно полезен при работе с потоками, такими как сокеты, чтобы определить, можно ли записывать в них данные.
Разъяснивший Python | ChatGPT
Метод writable() проверяет, разрешен ли доступ на запись к файлу или потоку. Он особенно полезен при работе с потоками, такими как сокеты, чтобы определить, можно ли записывать в них данные.
Разъяснивший Python | ChatGPT
Создание последовательностей (ч.2)
Разъяснивший Python | ChatGPT
getitem(self, key) — вызывается при обращении к элементу в последовательности по его ключу (индексу). Метод должен выбрасывать исключение TypeError, если используется некорректный тип ключа, KeyError, если данному ключу не соответствует ни один элемент в последовательности.Разъяснивший Python | ChatGPT
👍1
Поиск максимальной прибыли
Дан целочисленный массив prices, где prices[i] - это цена данной акции на i-й день. В каждый день вы можете принять решение о покупке и/или продаже акции. В любой момент времени вы можете держать не более одной акции. Однако вы можете купить ее и тут же продать в тот же день. Найдите и верните максимальную прибыль, которую вы можете получить.
Решение работает следующим образом: в методе maxProfit создаем пустой список price_gain, который будет хранить прибыль от каждой сделки. Проходим по списку цен и для каждой пары соседних цен проверяем, если цена на следующий день выше, чем цена на текущий день. Если это так, то вычисляем разницу между этими ценами и добавляем ее в price_gain. В конце возвращаем сумму всех элементов price_gain - это и будет максимальная прибыль.
Разъяснивший Python | ChatGPT
Дан целочисленный массив prices, где prices[i] - это цена данной акции на i-й день. В каждый день вы можете принять решение о покупке и/или продаже акции. В любой момент времени вы можете держать не более одной акции. Однако вы можете купить ее и тут же продать в тот же день. Найдите и верните максимальную прибыль, которую вы можете получить.
Решение работает следующим образом: в методе maxProfit создаем пустой список price_gain, который будет хранить прибыль от каждой сделки. Проходим по списку цен и для каждой пары соседних цен проверяем, если цена на следующий день выше, чем цена на текущий день. Если это так, то вычисляем разницу между этими ценами и добавляем ее в price_gain. В конце возвращаем сумму всех элементов price_gain - это и будет максимальная прибыль.
Разъяснивший Python | ChatGPT
👍2
Сортировка списков
В Python есть два способа сортировки списка: встроенный метод списка list.sort() и встроенная функция sorted(). Вот в чем заключается их отличие:
- Функция sorted() принимает итерируемый объект и возвращает новый отсортированный список, не изменяя исходный.
- Метод list.sort() сортирует список на месте, то есть изменяет исходный список.
Разъяснивший Python | ChatGPT
В 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
Дан целочисленный массив nums. Изначально вы располагаетесь на первом индексе массива, и каждый элемент массива представляет собой максимальную длину вашего прыжка на этой позиции.
Возвращается true, если вы можете достичь последнего индекса, или false в противном случае.
Решение: создаем переменную farthest, которая будет хранить самый дальний индекс, до которого можно добраться. Затем проходим по nums и для каждого элемента проверяем, можно ли добраться до него из текущего положения (if i > farthest):
- Если это невозможно, то алгоритм возвращает False, так как мы не можем добраться до последнего элемента.
- Если это возможно, то алгоритм обновляет значение переменной farthest, если текущий элемент позволяет добраться дальше (if nums[i] + i > farthest).
- Если значение переменной farthest больше или равно индексу последнего элемента списка, то алгоритм возвращает True, так как мы можем добраться до последнего элемента.
Разъяснивший Python | ChatGPT
❤2
Декоратор @classmethod
Один из распространенных способов использования методов класса — это создание фабричных методов, которые возвращают новые экземпляры класса.
В этом примере мы определяем класс MyClass с методом __init__, который принимает один аргумент value. Затем определяем метод класса from_string, который принимает строку и преобразует ее в целое число с помощью функции int. Метод возвращает новый экземпляр класса MyClass, созданный с помощью переданного значения.
Метод класса определяется с помощью декоратора
Разъяснивший Python | ChatGPT
Декоратор @classmethod используется для создания методов класса. Метод класса — это метод, который привязан к классу, а не к его экземпляру. Это означает, что вы можете вызвать метод класса на самом классе, а не на его экземпляре.Один из распространенных способов использования методов класса — это создание фабричных методов, которые возвращают новые экземпляры класса.
В этом примере мы определяем класс MyClass с методом __init__, который принимает один аргумент value. Затем определяем метод класса from_string, который принимает строку и преобразует ее в целое число с помощью функции int. Метод возвращает новый экземпляр класса MyClass, созданный с помощью переданного значения.
Метод класса определяется с помощью декоратора
@classmethod и принимает первым аргументом ссылку на сам класс (обычно называемую cls). Внутри метода мы используем эту ссылку для создания и возврата нового экземпляра класса.Разъяснивший Python | ChatGPT
Создание последовательностей (ч.3)
setitem(self, key, value) — вызывается при присваивании какого-либо значения элементу в последовательности. Также может выбрасывать исключения TypeError и KeyError.
Разъяснивший Python | ChatGPT
setitem(self, key, value) — вызывается при присваивании какого-либо значения элементу в последовательности. Также может выбрасывать исключения TypeError и KeyError.
Разъяснивший Python | ChatGPT
Дано целое число, преобразовать его в римскую цифру.
В этом решении мы создаем метод intToRoman, который принимает целое число в качестве аргумента и возвращает его римское представление в виде строки.
Метод использует жадный алгоритм для поиска наибольшего римского числа, которое может быть вычтено из входного числа. Затем он вычитает это число и добавляет соответствующее римское число к результату.
Этот процесс повторяется до тех пор, пока входное число не станет равным нулю.
Разъяснивший 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
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
Слово определяется как последовательность символов, не содержащих пробелов. Слова в s будут разделены как минимум одним пробелом.
Вернуть строку, состоящую из слов в обратном порядке, объединенных одним пробелом.
*s может содержать начальные или конечные пробелы, а также несколько пробелов между двумя словами. Возвращаемая строка должна содержать только один пробел, разделяющий слова.
Чтобы решить данную задачу нам необходимо:
- Удалить начальные и конечные пробелы, а также уменьшить количество пробелов между словами до одного.
- Разбить строку на отдельные слова и сохранить в списке.
- Поменять порядок слов в списке на обратный с помощью метода reverse().
- Объединить слова в строку, разделенную одним пробелом, и вернуть результат.
Разъяснивший Python | ChatGPT
❤2
Генерируем фейковый профиль человека
С помощью метода profile пакета Faker мы с легкостью может получить информацию о несуществующем человеке.
Документацию можно найти здесь.
Разъяснивший Python | ChatGPT
С помощью метода profile пакета Faker мы с легкостью может получить информацию о несуществующем человеке.
Документацию можно найти здесь.
Разъяснивший Python | ChatGPT
List и Tuple — зачем нужны и какие отличия
List и Tuple — это два основных типа данных для хранения последовательностей.
List (список) — изменяемый тип данных, можно добавлять, удалять и изменять элементы.
Tuple (кортеж) — неизменяемый тип данных, элементы нельзя изменить после создания.
Основные отличия:
- Списки изменяемые, кортежи - нет;
- Списки удобнее для добавления/удаления элементов;
- Кортежи более эффективны по памяти и быстрее для доступа к элементам.
Для хранения постоянных данных лучше использовать кортежи, а для изменяемых данных — списки.
Разъяснивший Python | ChatGPT
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
В нашем решении сначала список nums сортируется. Затем перебираются все возможные комбинации индексов i, j и k. Их сумма проверяется на равенство target и добавляется в результирующий сет, если равна.
Разъяснивший Python | ChatGPT
seekable()
Метод
Разъяснивший Python | ChatGPT
Метод
seekable() в Python проверяет, поддерживает ли объект произвольный доступ, то есть чтение или запись в любую позицию файла. Если объект не поддерживает произвольный доступ, то методы seek() и tell() будут недоступны.Разъяснивший Python | ChatGPT
Глубокое копирование (deep copy)
Глубокое копирование нужно для создания полной копии объекта, включая все вложенные объекты. Это важно для изменяемых объектов, таких как списки, чтобы изменения в копии не затрагивали оригинал.
Когда мы вызываем глубокое копирование, происходит следующее:
- Создается новый контейнерный объект (список, словарь и т. д.);
- Для каждого элемента исходного объекта рекурсивно вызывается глубокое копирование:
- Если элемент является изменяемым объектом (списком, словарем), то создается его копия с рекурсивным копированием вложенных элементов;
- Если элемент неизменяемый (число, строка) - он просто копируется как есть;
- Копии вложенных объектов вставляются в копию исходного объекта.
Разъяснивший Python | ChatGPT
Глубокое копирование нужно для создания полной копии объекта, включая все вложенные объекты. Это важно для изменяемых объектов, таких как списки, чтобы изменения в копии не затрагивали оригинал.
Когда мы вызываем глубокое копирование, происходит следующее:
- Создается новый контейнерный объект (список, словарь и т. д.);
- Для каждого элемента исходного объекта рекурсивно вызывается глубокое копирование:
- Если элемент является изменяемым объектом (списком, словарем), то создается его копия с рекурсивным копированием вложенных элементов;
- Если элемент неизменяемый (число, строка) - он просто копируется как есть;
- Копии вложенных объектов вставляются в копию исходного объекта.
Разъяснивший Python | ChatGPT
Унарные операторы (ч.1)
В данном примере класс Number реализует метод neg(self), который переопределяет оператор отрицания - для объектов этого класса. Когда мы используем оператор отрицания для объекта num, Python вызывает метод neg для этого объекта, который возвращает новый объект Number с отрицательным значением атрибута value.
Этот лайфхак полезен для создания объектов, которые могут поддерживать математические операции с помощью перегрузки операторов в Python. Переопределение метода neg позволяет определить поведение объекта при использовании оператора отрицания, что может быть полезно при работе с числами или другими данными, где операция отрицания имеет смысл.
Разъяснивший Python | ChatGPT
В данном примере класс Number реализует метод neg(self), который переопределяет оператор отрицания - для объектов этого класса. Когда мы используем оператор отрицания для объекта num, Python вызывает метод neg для этого объекта, который возвращает новый объект Number с отрицательным значением атрибута value.
Этот лайфхак полезен для создания объектов, которые могут поддерживать математические операции с помощью перегрузки операторов в Python. Переопределение метода neg позволяет определить поведение объекта при использовании оператора отрицания, что может быть полезно при работе с числами или другими данными, где операция отрицания имеет смысл.
Разъяснивший Python | ChatGPT
🔥1
Унарные операторы (ч.2)
Метод pos(self) в Python вызывается при использовании унарного оператора плюс (+) для объекта. Он позволяет определить поведение объекта при применении унарного плюса к нему.
В данном примере метод pos просто возвращает сам объект без изменений. Это позволяет объекту сохранять своё значение при использовании унарного плюса. Несмотря на то, что в этом примере метод pos не вносит никаких изменений, он может быть полезен для реализации специфического поведения в других контекстах.
Разъяснивший Python | ChatGPT
Метод pos(self) в Python вызывается при использовании унарного оператора плюс (+) для объекта. Он позволяет определить поведение объекта при применении унарного плюса к нему.
В данном примере метод pos просто возвращает сам объект без изменений. Это позволяет объекту сохранять своё значение при использовании унарного плюса. Несмотря на то, что в этом примере метод pos не вносит никаких изменений, он может быть полезен для реализации специфического поведения в других контекстах.
Разъяснивший Python | ChatGPT