50 команд на Python часть 3. Фильтрация, Сокращения, Насколько истинным является список? Перечисление, Кастинг.

Первая часть тут Подробнее ➤
Вторая часть тут Подробнее ➤
11. Фильтрация
Если команда map возвращает результат для каждого элемента в итерабельном списке, то filter возвращает результат только в том случае, если функция возвращает значение True. Это означает, что вы можете создать новый список элементов, в котором будут использоваться только те элементы, которые удовлетворяют некоторому условию. Например, если ваша функция проверяет, что значениями являются числа от 0 до 10, то она создает новый список, в котором нет отрицательных чисел и нет чисел больше 10. Этого можно было бы добиться с помощью цикла for, но этот метод намного чище. Если функция, предоставляемая filter, имеет значение 'None', то предполагается, что это функция тождества. Это означает, что в новый список возвращаются только те элементы, которые имеют значение True. Итерабельные версии fiter доступны в модуле itertools.
12. Сокращения
Во многих вычислениях одной из операций, которую необходимо выполнить, является операция уменьшения. Это когда вы берете некоторый список значений и сокращаете его до одного значения. В Python вы можете использовать команду 'reduce (function, iterable)', чтобы применить функцию уменьшения к каждой паре элементов в списке. Например, если применить операцию сокращения суммирования к списку из первых пяти целых чисел, то получится результат ( ( ( (1+2)+3)+4)+5). По желанию можно добавить третий параметр в качестве инициализирующего члена. Он загружается перед любыми элементами из итеративной таблицы и возвращается по умолчанию, если итеративная таблица пуста. Вы можете использовать лямбда-функцию в качестве параметра функции для сокращения, чтобы сохранить код как можно более узким. В этом случае помните, что она должна принимать только два входных параметра.
13. Насколько истинным является список?
В некоторых случаях вы можете собрать в списке несколько элементов, которые могут быть оценены как True или False. Например, вы прогнали через вычисления несколько вариантов и составили список из них. Вы можете использовать команду 'any (list)', чтобы проверить, является ли любой из элементов вашего списка истинным. Если вам нужно проверить, все ли элементы являются истинными, вы можете использовать команду 'all (list)'. Обе эти команды возвращают True, если соответствующее условие выполнено, и False, если нет. Однако они ведут себя по-разному, если объект iterable пуст. Команда 'all' возвращает True, если итерируемый объект пуст, тогда как команда 'any' возвращает False, если задан любой пустой итерируемый объект.

14. Перечисление
Иногда нам нужно обозначить элементы, находящиеся в объекте iterable, их индексами, чтобы их можно было обработать впоследствии. Это можно сделать, явно перебирая все элементы и создавая перечисляемый список. Команда enumerate делает это в одной строке. Она принимает объект iterable и создает список кортежей в качестве результата. Каждый кортеж имеет основанный на 0 индекс элемента, а также сам элемент. Вы можете начать индексацию с какого-либо другого значения, включив необязательный второй параметр. В качестве примера можно перечислить список имен командой 'list (enumerate (names, start=1))'. В данном примере мы решили начать индексацию с 1, а не с 0.
15. Кастинг
Переменные в Python не имеют информации о типе, и поэтому могут использоваться для хранения объектов любого типа. Однако фактические данные имеют тот или иной тип. Многие операторы, например, сложение, предполагают, что входные значения имеют один и тот же тип. Очень часто используемый оператор достаточно умен, чтобы выполнить необходимое преобразование. Если вам необходимо явно преобразовать данные из одного типа в другой, существует целый класс функций, которые могут быть использованы для этого преобразования. Наиболее часто вы будете использовать такие функции, как 'abs', 'bin', 'bool', 'chr', 'complex', 'fl oat', 'hex', 'int', 'long', 'oct' и 'str'. Для функций преобразования, основанных на числах, существует порядок старшинства, при котором одни типы являются подмножеством других. Например, целые числа находятся "ниже", чем осьминоги. При преобразовании вверх не должно происходить никаких изменений в конечном значении. При преобразовании вниз обычно теряется некоторое количество информации. Например, при преобразовании из числа float в целое число Python усекает число до нуля.