Как удалить ключ из словаря при помощи генератора
Генераторы словаря в Python — это быстрые однострочники, которые позволяют легко создавать словари.
Здесь важно понимать, что мы создаем новый словарь. Поэтому это не самый экономичный метод удаления ключа. Но если вы уверены, что ключ существует, а словарь не слишком велик, можно воспользоваться и генератором.
Подписывайтесь на канал 👉@pythonofff
Генераторы словаря в Python — это быстрые однострочники, которые позволяют легко создавать словари.
Здесь важно понимать, что мы создаем новый словарь. Поэтому это не самый экономичный метод удаления ключа. Но если вы уверены, что ключ существует, а словарь не слишком велик, можно воспользоваться и генератором.
Подписывайтесь на канал 👉@pythonofff
👍4👎2😱1🤣1
Кастомная функциональность
Этот декоратор — это всего лишь пример того, как вы можете проверить некоторые разрешения совсем просто и на 100% настроить это так, как вам необходимо.
Представьте, что у вас есть блог, магазин, форум… Если у пользователей должно быть несколько очков активности, чтобы написать отзыв, это стало бы хорошим способом избежать спама. Мы создадим декоратор, чтобы проверить, что пользователь вошел в систему и имеет более 10 баллов, поэтому может написать отзыв, в противном случае мы не дадим ему сделать этого.
Подписывайтесь на канал 👉@pythonofff
Этот декоратор — это всего лишь пример того, как вы можете проверить некоторые разрешения совсем просто и на 100% настроить это так, как вам необходимо.
Представьте, что у вас есть блог, магазин, форум… Если у пользователей должно быть несколько очков активности, чтобы написать отзыв, это стало бы хорошим способом избежать спама. Мы создадим декоратор, чтобы проверить, что пользователь вошел в систему и имеет более 10 баллов, поэтому может написать отзыв, в противном случае мы не дадим ему сделать этого.
Подписывайтесь на канал 👉@pythonofff
👍2
re.split()
Данный метод разделяет строку по заданному шаблону. Если шаблон найден, оставшиеся символы из строки возвращаются в виде результирующего списка. Более того, мы можем указать максимальное количество разделений для нашей строки.
Синтаксис: re.split(шаблон, строка, maxsplit = 0)
Возвращаемое значение может быть либо списком строк, на которые была разделена исходная строка, либо пустым списком, если совпадений с шаблоном не нашлось.
Подписывайтесь на канал 👉@pythonofff
Данный метод разделяет строку по заданному шаблону. Если шаблон найден, оставшиеся символы из строки возвращаются в виде результирующего списка. Более того, мы можем указать максимальное количество разделений для нашей строки.
Синтаксис: re.split(шаблон, строка, maxsplit = 0)
Возвращаемое значение может быть либо списком строк, на которые была разделена исходная строка, либо пустым списком, если совпадений с шаблоном не нашлось.
Подписывайтесь на канал 👉@pythonofff
👍3
Defaultdict
Словарь представляет из себя неупорядоченный набор ключей и значений.
В парах ключ:значение ключи должны быть уникальны и неизменяемы. Поэтому список не может быть ключом словаря, так как он изменяемый.
Подписывайтесь на канал 👉@pythonofff
Словарь представляет из себя неупорядоченный набор ключей и значений.
В парах ключ:значение ключи должны быть уникальны и неизменяемы. Поэтому список не может быть ключом словаря, так как он изменяемый.
Подписывайтесь на канал 👉@pythonofff
👍1
Функция findall()
Если мы хотим найти все вхождения, в дело вступает функция findall().
Синтаксис: findall(pattern, string, flags=0[optional])
В случае успеха данная функция возвращает список, в котором в виде строк содержатся все искомые вхождения по порядку. Если вхождений нет, то эта функция возвратит пустой список.
Подписывайтесь на канал 👉@pythonofff
Если мы хотим найти все вхождения, в дело вступает функция findall().
Синтаксис: findall(pattern, string, flags=0[optional])
В случае успеха данная функция возвращает список, в котором в виде строк содержатся все искомые вхождения по порядку. Если вхождений нет, то эта функция возвратит пустой список.
Подписывайтесь на канал 👉@pythonofff
👍4
Дальнейшая обработка данных
Иногда, чтобы очистить данные, бывает нужно отбросить некоторые столбцы, создать новый столбец из существующих данных или удалить строки, не содержащие определенных данных.
Здесь в третьей строке мы отбрасываем два столбца с именами Id и Name и возвращаем копию нового датафрейма.
Четвертая строка проверяет, содержит ли столбец Type строку frozen или green, затем возвращает True и сохраняет эту строку.
Подписывайтесь на канал 👉@pythonofff
Иногда, чтобы очистить данные, бывает нужно отбросить некоторые столбцы, создать новый столбец из существующих данных или удалить строки, не содержащие определенных данных.
Здесь в третьей строке мы отбрасываем два столбца с именами Id и Name и возвращаем копию нового датафрейма.
Четвертая строка проверяет, содержит ли столбец Type строку frozen или green, затем возвращает True и сохраняет эту строку.
Подписывайтесь на канал 👉@pythonofff
👍1
Отлавливаем ошибки с помощью assert
Инструкция assert принимает логическое выражение и необязательное сообщение. Она используется для проверки типов, значений аргумента и вывода функции, а также для отладки, поскольку останавливает программу в случае ошибки.
Если выполнить инструкцию assert с логическим выражением, результат которого равен True, ничего не произойдет. Но в случае с False будет сгенерировано исключение AssertionError.
Однако не нужно пытаться обработать исключение AssertionError блоком try-except. В таком случае assert теряет свой смысл.
В примере мы проверили, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Подписывайтесь на канал 👉@pythonofff
Инструкция assert принимает логическое выражение и необязательное сообщение. Она используется для проверки типов, значений аргумента и вывода функции, а также для отладки, поскольку останавливает программу в случае ошибки.
Если выполнить инструкцию assert с логическим выражением, результат которого равен True, ничего не произойдет. Но в случае с False будет сгенерировано исключение AssertionError.
Однако не нужно пытаться обработать исключение AssertionError блоком try-except. В таком случае assert теряет свой смысл.
В примере мы проверили, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Подписывайтесь на канал 👉@pythonofff
👍3🔥1
Как определить индекс элемента списка в Python
Итак, как же определить индекс элемента в Python? Давайте представим, что у нас есть элемент списка и нам нужно узнать индекс или позицию этого элемента.
Списки Python предоставляют нам метод index(), с помощью которого можно получить индекс первого вхождения элемента в список.
Подписывайтесь на канал 👉@pythonofff
Итак, как же определить индекс элемента в Python? Давайте представим, что у нас есть элемент списка и нам нужно узнать индекс или позицию этого элемента.
Списки Python предоставляют нам метод index(), с помощью которого можно получить индекс первого вхождения элемента в список.
Подписывайтесь на канал 👉@pythonofff
👍1🔥1
Удаление ключа из словаря при помощи ключевого слова del
Python также позволяет использовать ключевое слово del для удаления определенного ключа из словаря. Использование ключевого слова del является менее безопасным подходом, так как нет способа просто указать значение по умолчанию, как это можно сделать при использовании метода .pop().
Подписывайтесь на канал 👉@pythonofff
Python также позволяет использовать ключевое слово del для удаления определенного ключа из словаря. Использование ключевого слова del является менее безопасным подходом, так как нет способа просто указать значение по умолчанию, как это можно сделать при использовании метода .pop().
Подписывайтесь на канал 👉@pythonofff
👍5
Перемещение и удаление файлов в Python
Чтобы переместить файл, мы можем воспользоваться модулем os или модулем shutil. Вы увидите перемещение файла при помощи метода rename() из модуля os.
Синтаксис rename() тот же, только в качестве второго аргумента указывается путь к целевому файлу с именем самого файла.
os.rename(исходноеместонахождение, целевоеместонахождение)
Подписывайтесь на канал 👉@pythonofff
Чтобы переместить файл, мы можем воспользоваться модулем os или модулем shutil. Вы увидите перемещение файла при помощи метода rename() из модуля os.
Синтаксис rename() тот же, только в качестве второго аргумента указывается путь к целевому файлу с именем самого файла.
os.rename(исходноеместонахождение, целевоеместонахождение)
Подписывайтесь на канал 👉@pythonofff
👍5
Ошибка FileNotFoundError
Ошибка FileNotFoundError часто возникает при работе с файлами в Python. Этого можно легко избежать, указав полные пути к файлам при создании файлового объекта.
Подписывайтесь на канал 👉@pythonofff
Ошибка FileNotFoundError часто возникает при работе с файлами в Python. Этого можно легко избежать, указав полные пути к файлам при создании файлового объекта.
Подписывайтесь на канал 👉@pythonofff
👍1
Чем defaultdict отличается от простого словаря?
Если вы попытаетесь получить доступ к ключу, которого нет в словаре, он выдаст ошибку KeyError. В то время как при использовании defaultdict такой ошибки не будет.
Если вы попробуете обратиться к отсутствующему ключу, defaultdict просто вернет значение по умолчанию.
Синтаксис будет следующим: defaultdict(default_factory).
При обращении к отсутствующему ключу функция default_factory вернет значение по умолчанию.
Подписывайтесь на канал 👉@pythonofff
Если вы попытаетесь получить доступ к ключу, которого нет в словаре, он выдаст ошибку KeyError. В то время как при использовании defaultdict такой ошибки не будет.
Если вы попробуете обратиться к отсутствующему ключу, defaultdict просто вернет значение по умолчанию.
Синтаксис будет следующим: defaultdict(default_factory).
При обращении к отсутствующему ключу функция default_factory вернет значение по умолчанию.
Подписывайтесь на канал 👉@pythonofff
👍3
Функция itertools.cycle
В пайтон есть классный модуль itertools для создания собственных итераторов. Функции данного модуля довольно эффективны в работе, поэтому их часто используют в реальных проектах.
Сегодня мы бы хотели показать вам функцию cycle() из itertools. Данная функция принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элементы.
К примеру, функция cycle() из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную. Но важно при проходе при итерации по такому итератору предусмотреть выход из цикла (а не как у нас в первом случае с colors:). Так как это итератор, то мы можем использовать его для получения значений через функцию next(colors).
Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта.
Подписывайтесь на канал 👉@pythonofff
В пайтон есть классный модуль itertools для создания собственных итераторов. Функции данного модуля довольно эффективны в работе, поэтому их часто используют в реальных проектах.
Сегодня мы бы хотели показать вам функцию cycle() из itertools. Данная функция принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элементы.
К примеру, функция cycle() из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную. Но важно при проходе при итерации по такому итератору предусмотреть выход из цикла (а не как у нас в первом случае с colors:). Так как это итератор, то мы можем использовать его для получения значений через функцию next(colors).
Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта.
Подписывайтесь на канал 👉@pythonofff
👍3
Не используйте обработку исключений слишком часто
Обработка исключений может защитить вашу программу от внезапных сбоев. Тем не менее все прекрасно знают, что подобные конструкции могут заметно снизить производительность скрипта.
Не стоит злоупотреблять try-except конструкциями, так как в большинстве случаев можно справиться с задачей, применяя обычные условия. Используйте обработку исключений только в крайних случаях.
На картинке мы привели пример двух случаев необоснованного использования обработки исключений, а также показали более правильную альтернативу.
Подписывайтесь на канал 👉@pythonofff
Обработка исключений может защитить вашу программу от внезапных сбоев. Тем не менее все прекрасно знают, что подобные конструкции могут заметно снизить производительность скрипта.
Не стоит злоупотреблять try-except конструкциями, так как в большинстве случаев можно справиться с задачей, применяя обычные условия. Используйте обработку исключений только в крайних случаях.
На картинке мы привели пример двух случаев необоснованного использования обработки исключений, а также показали более правильную альтернативу.
Подписывайтесь на канал 👉@pythonofff
👍4
3 трюка с itertools
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции – chain. Она позволяет "склеивать" несколько итерируемых элементов в один.
Далее, accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее.
А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция combinations. Вторым аргументом можно задать длину этой самой комбинации.
Подписывайтесь на канал 👉@pythonofff
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции – chain. Она позволяет "склеивать" несколько итерируемых элементов в один.
Далее, accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее.
А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция combinations. Вторым аргументом можно задать длину этой самой комбинации.
Подписывайтесь на канал 👉@pythonofff
👍3
Получаем метаданные из аудиофайла
Для извлечения метаданных из аудиофайлов, а также их редактирования есть очень удобный модуль mutagen. Модуль позволяет получить всю основную информацию об аудиофайле: длину, битрейт, исполнителя и так далее.
Модуль поддерживает форматы метаданных APEv2 и ID3v2, анализируя все кадры ID3v2.4 (посмотреть все нужные теги ID3v2 можно тут).
Подписывайтесь на канал 👉@pythonofff
Для извлечения метаданных из аудиофайлов, а также их редактирования есть очень удобный модуль mutagen. Модуль позволяет получить всю основную информацию об аудиофайле: длину, битрейт, исполнителя и так далее.
Модуль поддерживает форматы метаданных APEv2 и ID3v2, анализируя все кадры ID3v2.4 (посмотреть все нужные теги ID3v2 можно тут).
Подписывайтесь на канал 👉@pythonofff
👍2
Когда стоит использовать замыкания?
Так для чего же нужны замыкания?
Замыкания позволяют избежать использования глобальных (global) значений и обеспечивают некоторую форму сокрытия данных. Для этого также может использоваться объектно-ориентированный подход.
Если в классе необходимо реализовать небольшое количество методов (в большинстве случаев один метод), замыкания могут обеспечить альтернативное и более элегантное решение.
Иногда количество атрибутов и методов становится больше, лучше реализовать класс.
Вот простой пример, где замыкание может быть более предпочтительным, чем определение класса и создание объектов. Но выбор остается за вами.
Подписывайтесь на канал 👉@pythonofff
Так для чего же нужны замыкания?
Замыкания позволяют избежать использования глобальных (global) значений и обеспечивают некоторую форму сокрытия данных. Для этого также может использоваться объектно-ориентированный подход.
Если в классе необходимо реализовать небольшое количество методов (в большинстве случаев один метод), замыкания могут обеспечить альтернативное и более элегантное решение.
Иногда количество атрибутов и методов становится больше, лучше реализовать класс.
Вот простой пример, где замыкание может быть более предпочтительным, чем определение класса и создание объектов. Но выбор остается за вами.
Подписывайтесь на канал 👉@pythonofff
👍6
Элегантный способ перевернуть строку в Python - Цикл
Мы можем перевернуть строку и в цикле.
Для начала создадим массив (список) reversedString[].
После этого мы можем запустить цикл, где итерируемой переменной будет index — длина списка.
На каждой итерации цикла в reversedString добавляется символ из строки с индексом [index-1]. После этого index уменьшается на 1.
Цикл продолжается до тех пор, пока переменная index не станет равна 0.
Подписывайтесь на канал 👉@pythonofff
Мы можем перевернуть строку и в цикле.
Для начала создадим массив (список) reversedString[].
После этого мы можем запустить цикл, где итерируемой переменной будет index — длина списка.
На каждой итерации цикла в reversedString добавляется символ из строки с индексом [index-1]. После этого index уменьшается на 1.
Цикл продолжается до тех пор, пока переменная index не станет равна 0.
Подписывайтесь на канал 👉@pythonofff
👎4🤮4👍3🤡1
Имитация
В вышеприведённом примере экспортирована будет лишь функция bar. А если оставить атрибут all пустым, то из модуля не будет экспортироваться вообще ничего. При попытке импорта чего-либо из такого модуля будет выдана ошибка AttributeError.
Подписывайтесь на канал 👉@pythonofff
В вышеприведённом примере экспортирована будет лишь функция bar. А если оставить атрибут all пустым, то из модуля не будет экспортироваться вообще ничего. При попытке импорта чего-либо из такого модуля будет выдана ошибка AttributeError.
Подписывайтесь на канал 👉@pythonofff
👍3