Извлечение уникальных значений из списка словарей
Когда у тебя есть список словарей, и нужно получить все уникальные значения по определённому ключу — есть лаконичный способ!
Итог:
Используй set comprehension, чтобы быстро и элегантно получать уникальные значения из списков словарей.
Разъяснивший Python
Когда у тебя есть список словарей, и нужно получить все уникальные значения по определённому ключу — есть лаконичный способ!
Итог:
Используй set comprehension, чтобы быстро и элегантно получать уникальные значения из списков словарей.
Разъяснивший Python
Реализация операции вычитания на месте для пользовательского класса
Метод isub в Python используется для реализации операции вычитания на месте (оператора -=). Этот метод позволяет изменять объект "на месте", что может быть полезно для оптимизации производительности и управления памятью.
Рассмотрим пример, в котором у нас есть класс, представляющий пользовательский список чисел. Мы хотим поддерживать операцию вычитания на месте как с обычными числами Python (int), так и с другими экземплярами нашего класса.
Этот лайфхак позволяет вашему классу поддерживать более гибкие и удобные операции вычитания на месте, что улучшает производительность и удобство использования, а также помогает избежать лишних копий данных.
Разъяснивший Python
Метод isub в Python используется для реализации операции вычитания на месте (оператора -=). Этот метод позволяет изменять объект "на месте", что может быть полезно для оптимизации производительности и управления памятью.
Рассмотрим пример, в котором у нас есть класс, представляющий пользовательский список чисел. Мы хотим поддерживать операцию вычитания на месте как с обычными числами Python (int), так и с другими экземплярами нашего класса.
Этот лайфхак позволяет вашему классу поддерживать более гибкие и удобные операции вычитания на месте, что улучшает производительность и удобство использования, а также помогает избежать лишних копий данных.
Разъяснивший Python
Генераторные фунции
Если предикатов фильтрации или обработчиков элементов списка много, то удобнее использовать генераторы. Они могут не дать прироста скорости, но помогут сэкономить память.
Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield.
Разъяснивший Python
Если предикатов фильтрации или обработчиков элементов списка много, то удобнее использовать генераторы. Они могут не дать прироста скорости, но помогут сэкономить память.
Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield.
Разъяснивший Python
Метод .index()
.index() — возвращает минимальный индекс переданного элемента для индексированных коллекций (строка, список, кортеж)
Разъяснивший Python
.index() — возвращает минимальный индекс переданного элемента для индексированных коллекций (строка, список, кортеж)
Разъяснивший Python
Конвертация одного типа коллекции в другой
В зависимости от стоящих задач, один тип коллекции можно конвертировать в другой тип коллекции. Для этого, как правило достаточно передать одну коллекцию в функцию создания другой.
Разъяснивший Python
В зависимости от стоящих задач, один тип коллекции можно конвертировать в другой тип коллекции. Для этого, как правило достаточно передать одну коллекцию в функцию создания другой.
Разъяснивший Python
Особые методы сравнения множеств (set, frozenset)
set_a.isdisjoint(set_b) — истина, если set_a и set_b не имеют общих элементов.
set_b.issubset(set_a) — если все элементы множества set_b принадлежат множеству set_a, то множество set_b целиком входит в множество set_a и является его подмножеством (set_b — подмножество)
set_a.issuperset(set_b) — соответственно, если условие выше справедливо, то set_a — надмножество
Разъяснивший Python
set_a.isdisjoint(set_b) — истина, если set_a и set_b не имеют общих элементов.
set_b.issubset(set_a) — если все элементы множества set_b принадлежат множеству set_a, то множество set_b целиком входит в множество set_a и является его подмножеством (set_b — подмножество)
set_a.issuperset(set_b) — соответственно, если условие выше справедливо, то set_a — надмножество
Разъяснивший Python
Переопределение стандартного поведения функций через декоратор
Иногда хочется обернуть функцию, чтобы автоматически логировать её вызов или измерять время исполнения. Это удобно делать через декоратор.
Итог:
Декораторы позволяют добавлять поведение к функциям, не изменяя их напрямую. Это мощный инструмент для логирования, кэширования, авторизации и прочих нужд.
Разъяснивший Python
Иногда хочется обернуть функцию, чтобы автоматически логировать её вызов или измерять время исполнения. Это удобно делать через декоратор.
Итог:
Декораторы позволяют добавлять поведение к функциям, не изменяя их напрямую. Это мощный инструмент для логирования, кэширования, авторизации и прочих нужд.
Разъяснивший Python
Возможная ошибка при обработке элементов
Не меняйте количество элементов коллекции в теле цикла во время итерации по этой же коллекции! — Это порождает не всегда очевидные на первый взгляд ошибки. Чтобы этого избежать подобных побочных эффектов, можно, например, итерировать копию коллекции.
Разъяснивший Python
Не меняйте количество элементов коллекции в теле цикла во время итерации по этой же коллекции! — Это порождает не всегда очевидные на первый взгляд ошибки. Чтобы этого избежать подобных побочных эффектов, можно, например, итерировать копию коллекции.
Разъяснивший Python
👍1👎1
Изменение элемента списка по индексу (ч.1)
Поскольку кортежи и строки у нас неизменяемые коллекции, то по индексу мы можем только брать элементы, но не менять их.
Разъяснивший Python
Поскольку кортежи и строки у нас неизменяемые коллекции, то по индексу мы можем только брать элементы, но не менять их.
Разъяснивший Python
Изменение элемента списка по индексу (ч.2)
А вот для списка, если взятие элемента по индексу располагается в левой части выражения, а далее идёт оператор присваивания =, то мы задаём новое значение элементу с этим индексом.
Разъяснивший Python
А вот для списка, если взятие элемента по индексу располагается в левой части выражения, а далее идёт оператор присваивания =, то мы задаём новое значение элементу с этим индексом.
Разъяснивший Python
Синтаксис среза
Следует помнить, что взяв элемент по индексу или срезом (slice) мы не как не меняем исходную коллекцию, мы просто скопировали ее часть для дальнейшего использования (например добавления в другую коллекцию, вывода на печать, каких-то вычислений). Поскольку сама коллекция не меняется — это применимо как к изменяемым (список) так и к неизменяемым (строка, кортеж) последовательностям.
Разъяснивший Python
Следует помнить, что взяв элемент по индексу или срезом (slice) мы не как не меняем исходную коллекцию, мы просто скопировали ее часть для дальнейшего использования (например добавления в другую коллекцию, вывода на печать, каких-то вычислений). Поскольку сама коллекция не меняется — это применимо как к изменяемым (список) так и к неизменяемым (строка, кортеж) последовательностям.
Разъяснивший Python
Изменение списка срезом (ч.1)
Важный момент, на котором не всегда заостряется внимание — с помощью среза можно не только получать копию коллекции, но в случае списка можно также менять значения элементов, удалять и добавлять новые.
Даже если хотим добавить один элемент, необходимо передавать итерируемый объект, иначе будет ошибка TypeError: can only assign an iterable
Разъяснивший Python
Важный момент, на котором не всегда заостряется внимание — с помощью среза можно не только получать копию коллекции, но в случае списка можно также менять значения элементов, удалять и добавлять новые.
Даже если хотим добавить один элемент, необходимо передавать итерируемый объект, иначе будет ошибка TypeError: can only assign an iterable
Разъяснивший Python
Изменение списка срезом (ч.2)
Можно менять части последовательности — это применение выглядит наиболее интересным, так как решает задачу просто и наглядно.
Разъяснивший Python
Можно менять части последовательности — это применение выглядит наиболее интересным, так как решает задачу просто и наглядно.
Разъяснивший Python
Именованные срезы
Чтобы избавится от «магических констант», особенно в случае, когда один и тот же срез надо применять многократно, можно задать константы с именованными срезами с пользованием специальной функции slice()()
Примечание: Nonе соответствует опущенному значению по-умолчанию. То есть [:2] становится slice(None, 2), а [1::2] становится slice(1, None, 2).
Разъяснивший Python
Чтобы избавится от «магических констант», особенно в случае, когда один и тот же срез надо применять многократно, можно задать константы с именованными срезами с пользованием специальной функции slice()()
Примечание: Nonе соответствует опущенному значению по-умолчанию. То есть [:2] становится slice(None, 2), а [1::2] становится slice(1, None, 2).
Разъяснивший Python
Debug в Python | Используйте ic() вместо print()
Сегодня мы рассмотрим библиотеку icecream для языка Python, которая позволяет дебажить ваш код проще и быстрее, чем через команду print(). Просто используй функцию ic() и твой debugging станет лучше.
Перейти к просмотру [07:31]
Разъяснивший Python
Сегодня мы рассмотрим библиотеку icecream для языка Python, которая позволяет дебажить ваш код проще и быстрее, чем через команду print(). Просто используй функцию ic() и твой debugging станет лучше.
Перейти к просмотру [07:31]
Разъяснивший Python
YouTube
Debug в Python | Используйте ic() вместо print()
Сегодня мы рассмотрим библиотеку icecream для языка Python, которая позволяет дебажить ваш код проще и быстрее, чем через команду print(). Просто используй функцию ic() и твой debugging станет лучше.
🔥 Подписывайся на наш Телеграм-канал про Python 🔥
🖇 …
🔥 Подписывайся на наш Телеграм-канал про Python 🔥
🖇 …
Выход за границы индекса
Обращение по индексу по сути является частным случаем среза, когда мы обращаемся только к одному элементу, а не диапазону. Но есть очень важное отличие в обработке ситуации с отсутствующим элементом с искомым индексом.
Обращение к несуществующему индексу коллекции вызывает ошибку.
Разъяснивший Python
Обращение по индексу по сути является частным случаем среза, когда мы обращаемся только к одному элементу, а не диапазону. Но есть очень важное отличие в обработке ситуации с отсутствующим элементом с искомым индексом.
Обращение к несуществующему индексу коллекции вызывает ошибку.
Разъяснивший Python
Россия на грани самого большого кризиса с начала 90-х.
Ключевая ставка не падает, ипотеку взять невозможно, новый утиль сбор на машины - цены только растут, а зарплаты нет.
Умному человеку очевидно, что нужно готовиться к большим переменам. Большинство окажутся к ним не готовы и потеряют всё. Пережить кризис и заработать на нем поможет канал Сергея Романова.
Он первым предсказал падение доллара в 2025, разгон инфляции и недавнее падение криптовалют
А сейчас по фактам объясняет, к чему нам готовиться в 2026 году, что будет с недвижкой и рублём (спойлер: ничего хорошего), как сохранить свои сбережения и когда действительно закончится кризис.
Подписывайтесь, чтобы быть в курсе всех инсайдов заранее:
@ROMANOV
Ключевая ставка не падает, ипотеку взять невозможно, новый утиль сбор на машины - цены только растут, а зарплаты нет.
Умному человеку очевидно, что нужно готовиться к большим переменам. Большинство окажутся к ним не готовы и потеряют всё. Пережить кризис и заработать на нем поможет канал Сергея Романова.
Он первым предсказал падение доллара в 2025, разгон инфляции и недавнее падение криптовалют
А сейчас по фактам объясняет, к чему нам готовиться в 2026 году, что будет с недвижкой и рублём (спойлер: ничего хорошего), как сохранить свои сбережения и когда действительно закончится кризис.
Подписывайтесь, чтобы быть в курсе всех инсайдов заранее:
@ROMANOV
Измеряем время выполнения кода с помощью contextmanager
Чтобы быстро измерить производительность участка кода, можно создать простой контекстный менеджер.
Итог:
Контекстный менеджер делает измерение времени элегантным и удобным — особенно при профилировании кода
Разъяснивший Python
Чтобы быстро измерить производительность участка кода, можно создать простой контекстный менеджер.
Итог:
Контекстный менеджер делает измерение времени элегантным и удобным — особенно при профилировании кода
Разъяснивший Python
Методы списка .sort() и .reverse()
У списка (и только у него) есть особые методы .sort() и .reverse() которые делают тоже самое, что соответствующие функции sorted() и reversed(), но при этом:
Меняют сам исходный список, а не генерируют новый.
Возвращают None, а не новый список.
Поддерживают те же дополнительные аргументы;
Разъяснивший Python
У списка (и только у него) есть особые методы .sort() и .reverse() которые делают тоже самое, что соответствующие функции sorted() и reversed(), но при этом:
Меняют сам исходный список, а не генерируют новый.
Возвращают None, а не новый список.
Поддерживают те же дополнительные аргументы;
Разъяснивший Python
Устойчивость сортировки
Допустим данные нужно отсортировать сначала по столбцу А по возрастанию, затем по столбцу B по убыванию, и наконец по столбцу C снова по возрастанию.
Если данные в столбце B числовые, то при помощи подходящей функции в key можно поменять знак у элементов B, что приведёт к необходимому результату.
А если все данные текстовые? Тут есть такая возможность.
Дело в том, что сортировка sort в Python устойчивая (начиная с Python 2.2), то есть она не меняет порядок «одинаковых» элементов.
Поэтому можно просто отсортировать три раза по разным ключам.
Разъяснивший Python
Допустим данные нужно отсортировать сначала по столбцу А по возрастанию, затем по столбцу B по убыванию, и наконец по столбцу C снова по возрастанию.
Если данные в столбце B числовые, то при помощи подходящей функции в key можно поменять знак у элементов B, что приведёт к необходимому результату.
А если все данные текстовые? Тут есть такая возможность.
Дело в том, что сортировка sort в Python устойчивая (начиная с Python 2.2), то есть она не меняет порядок «одинаковых» элементов.
Поэтому можно просто отсортировать три раза по разным ключам.
Разъяснивший Python