Объединение множеств без изменения исходных
Для обоих типов множеств (set, frozenset) возможны различные варианты комбинации множеств (исходные множества при этом не меняются — возвращается новое множество).
#theory // Just Python
Для обоих типов множеств (set, frozenset) возможны различные варианты комбинации множеств (исходные множества при этом не меняются — возвращается новое множество).
#theory // Just Python
Объединение списка, словаря и изменяемого множества с изменением исходной коллекции (ч.1)
Для списка. Добавляем все элементы второго списка к элементам первого с измением первого списка методом .extend()
#theory // Just Python
Для списка. Добавляем все элементы второго списка к элементам первого с измением первого списка методом .extend()
#theory // Just Python
Объединение списка, словаря и изменяемого множества с изменением исходной коллекции (ч.2)
Для изменения словаря с добавления элементов другого словаря используется метод .update().
Обратите внимание: для совпадающих ключей словаря при этом обновляются значения.
#theory // Just Python
Для изменения словаря с добавления элементов другого словаря используется метод .update().
Обратите внимание: для совпадающих ключей словаря при этом обновляются значения.
#theory // Just Python
Возможная ошибка при обработке элементов
Не меняйте количество элементов коллекции в теле цикла во время итерации по этой же коллекции! — Это порождает не всегда очевидные на первый взгляд ошибки. Чтобы этого избежать подобных побочных эффектов, можно, например, итерировать копию коллекции.
#theory // Just Python
Не меняйте количество элементов коллекции в теле цикла во время итерации по этой же коллекции! — Это порождает не всегда очевидные на первый взгляд ошибки. Чтобы этого избежать подобных побочных эффектов, можно, например, итерировать копию коллекции.
#theory // Just Python
Объединение списка, словаря и изменяемого множества с изменением исходной коллекции (ч.3)
Для изменяемого множества (set) кроме операций, описанных в предыдущем разделе, также возможны их аналоги, но уже с изменением исходного множества — эти методы заканчиваются на _update. Результат зависит от того, какое множество каким обновляем.
#theory // Just Python
Для изменяемого множества (set) кроме операций, описанных в предыдущем разделе, также возможны их аналоги, но уже с изменением исходного множества — эти методы заканчиваются на _update. Результат зависит от того, какое множество каким обновляем.
#theory // Just Python
Особенности работы с изменяемой и не изменяемой коллекцией (ч.1)
Строка неизменяемая коллекция — если мы ее меняем — мы создаем новый объект!
#theory // Just Python
Строка неизменяемая коллекция — если мы ее меняем — мы создаем новый объект!
#theory // Just Python
Особенности работы с изменяемой и не изменяемой коллекцией (ч.2)
Список изменяем и тут надо быть очень внимательным, чтобы не допустить серьезную ошибку! Сравните данный пример с предыдущем примером со строками.
#theory // Just Python
Список изменяем и тут надо быть очень внимательным, чтобы не допустить серьезную ошибку! Сравните данный пример с предыдущем примером со строками.
#theory // Just Python
Создание объектов, поддерживающих выражение with
Все знают о том, как, например, открыть файл, или, возможно, как установить блокировку с использованием оператора with. Но можно ли самостоятельно реализовать механизм управления блокировками? Да, это вполне реально. Протокол управления контекстом исполнения реализуется с использованием методов enter и exit
#theory // Just Python
Все знают о том, как, например, открыть файл, или, возможно, как установить блокировку с использованием оператора with. Но можно ли самостоятельно реализовать механизм управления блокировками? Да, это вполне реально. Протокол управления контекстом исполнения реализуется с использованием методов enter и exit
#theory // Just Python
Добавляем условие для фильтрации
Важно: Условие проверяется на каждой итерации, и только элементы ему удовлетворяющие идут в обработку в выражении.
Мы можем использовать несколько условий, комбинируя их логическими операторами
#theory // Just Python
Важно: Условие проверяется на каждой итерации, и только элементы ему удовлетворяющие идут в обработку в выражении.
Мы можем использовать несколько условий, комбинируя их логическими операторами
#theory // Just Python
Добавляем обработку элемента в выражении
Мы можем вставлять не сам текущий элемент, прошедший фильтр, а результат вычисления выражения с ним или результат его обработки функцией.
Выражение выполняется независимо на каждой итерации, обрабатывая каждый элемент индивидуально.
#theory // Just Python
Мы можем вставлять не сам текущий элемент, прошедший фильтр, а результат вычисления выражения с ним или результат его обработки функцией.
Выражение выполняется независимо на каждой итерации, обрабатывая каждый элемент индивидуально.
#theory // Just Python
Аналоги в виде цикла for и в виде функций
Задачи решаемые с помощью генераторов выражений можно решить и без них. Каждый генератор выражений можно переписать в виде цикла for, но не каждый цикл for можно представить в виде такого выражения.
#theory // Just Python
Задачи решаемые с помощью генераторов выражений можно решить и без них. Каждый генератор выражений можно переписать в виде цикла for, но не каждый цикл for можно представить в виде такого выражения.
#theory // Just Python
Улучшаем читаемость
Не забываем, что в Python синтаксис позволяет использовать переносы строк внутри скобок. Используя эту возможность, можно сделать синтаксис генераторов выражений более легким для чтения.
#theory // Just Python
Не забываем, что в Python синтаксис позволяет использовать переносы строк внутри скобок. Используя эту возможность, можно сделать синтаксис генераторов выражений более легким для чтения.
#theory // Just Python
Решение с помощью функций
Для начала, замечу, что выражение генераторы и генераторы коллекций — это тоже функциональный стиль, но более новый и предпочтительный.
Можно применять и более старые функциональные подходы для решения тех же задач, комбинируя map(), lambda и filter().
#theory // Just Python
Для начала, замечу, что выражение генераторы и генераторы коллекций — это тоже функциональный стиль, но более новый и предпочтительный.
Можно применять и более старые функциональные подходы для решения тех же задач, комбинируя map(), lambda и filter().
#theory // Just Python
Выражения-генераторы
Выражения-генераторы (generator expressions) доступны, начиная с Python 2.4. Основное их отличие от генераторов коллекций в том, что они выдают элемент по-одному, не загружая в память сразу всю коллекцию.
#theory // Just Python
Выражения-генераторы (generator expressions) доступны, начиная с Python 2.4. Основное их отличие от генераторов коллекций в том, что они выдают элемент по-одному, не загружая в память сразу всю коллекцию.
#theory // Just Python
Ветвление выражения
Условия ветвления пишутся не после, а перед итератором.
В данном случае if-else это не фильтр перед выполнением выражения, а ветвление самого выражения, то есть переменная уже прошла фильтр, но в зависимости от условия может быть обработана по-разному!
#theory // Just Python
Условия ветвления пишутся не после, а перед итератором.
В данном случае if-else это не фильтр перед выполнением выражения, а ветвление самого выражения, то есть переменная уже прошла фильтр, но в зависимости от условия может быть обработана по-разному!
#theory // Just Python
Особенности выражений-генераторов (ч.1)
Генаратор нельзя писать без скобок — это синтаксическая ошибка.
При передаче в функцию дополнительные скобки необязательны.
Нельзя получить длину функцией len()
Нельзя распечатать элементы функцией print()
#theory // Just Python
Генаратор нельзя писать без скобок — это синтаксическая ошибка.
При передаче в функцию дополнительные скобки необязательны.
Нельзя получить длину функцией len()
Нельзя распечатать элементы функцией print()
#theory // Just Python
Особенности выражений-генераторов (ч.2)
Обратите внимание, что после прохождения по выражению-генератору оно остается пустым!
Выражение-генератор может быть бесконечным.
К выражению-генератору не применимы срезы!
Из генератора легко получать нужную коллекцию. Это подробно рассматривается в следующей главе.
#theory // Just Python
Обратите внимание, что после прохождения по выражению-генератору оно остается пустым!
Выражение-генератор может быть бесконечным.
К выражению-генератору не применимы срезы!
Из генератора легко получать нужную коллекцию. Это подробно рассматривается в следующей главе.
#theory // Just Python
Создание коллекций из выражения-генератора (ч.1)
Передачей готового выражения-генератора присвоенного переменной в функцию создания коллекции.
#theory // Just Python
Передачей готового выражения-генератора присвоенного переменной в функцию создания коллекции.
#theory // Just Python
Создание коллекций из выражения-генератора (ч.2)
Написание выражения-генератора сразу внутри скобок вызываемой функции создания коллекции.
#theory // Just Python
Написание выражения-генератора сразу внутри скобок вызываемой функции создания коллекции.
#theory // Just Python
Использование with для автоматического закрытия файлов
В Python конструкция with позволяет автоматически управлять ресурсами, такими как файлы, гарантируя их корректное закрытие после завершения работы с ними. Это избавляет от необходимости вручную закрывать файлы и предотвращает возможные ошибки, связанные с их неправильным закрытием.
Использование конструкции with для работы с файлами улучшает читаемость кода и делает его более надежным, автоматически управляя жизненным циклом ресурсов.
#theory // Just Python
В Python конструкция with позволяет автоматически управлять ресурсами, такими как файлы, гарантируя их корректное закрытие после завершения работы с ними. Это избавляет от необходимости вручную закрывать файлы и предотвращает возможные ошибки, связанные с их неправильным закрытием.
Использование конструкции with для работы с файлами улучшает читаемость кода и делает его более надежным, автоматически управляя жизненным циклом ресурсов.
#theory // Just Python