Python поддерживает перезагрузку оператора. Зная эти слова, вы сразу кажитесь настоящим компьютерным гением. На самом деле, концепция довольно проста. Вы когда-нибудь задавались вопросом, почему в Python можно использовать оператор + для добавления чисел и конкатенации строк? Это и есть перезагрузка оператора в чистом виде. Вы можете определить объекты, которые будут пользоваться стандартными символами операторов Python по-своему. Тогда их можно будет использовать в зависимости от содержимого объектов, с которыми вы работаете.
Ох уж эти списки, состоящие из списков. Как бы их сделать попроще, выстроить в один ряд? Для этого тоже есть решение.
В третьей строке код проверяет, не является ли элемент списком. Если да, то использует метод extend() для расширения этим элементом итогового списка, если нет — то присоединяет его как одиночный элемент методом append().
Также в этой строке функция вызывает сама себя и, в случае списков, состоящих из списков, «проваливается» в них до тех пор, пока не доберётся до элементов, не являющихся списками. Это называется рекурсией.
Python поддерживает перезагрузку оператора. Зная эти слова, вы сразу кажитесь настоящим компьютерным гением. На самом деле, концепция довольно проста. Вы когда-нибудь задавались вопросом, почему в Python можно использовать оператор + для добавления чисел и конкатенации строк? Это и есть перезагрузка оператора в чистом виде. Вы можете определить объекты, которые будут пользоваться стандартными символами операторов Python по-своему. Тогда их можно будет использовать в зависимости от содержимого объектов, с которыми вы работаете.
Этот простейший “трюк” поможет рассчитать время, необходимое для выполнения программы. Используя time-модуль, вы можете точно узнать, сколько времени требуется программе для выполнения кода.
Представьте, что у вас есть список строк, и вы хотите объединить все элементы в одну строку. Для этого вы наверняка будете перебирать каждый элемент в списке и присоединять к нему следующий.
Но есть более быстрый и эффективный способ выполнения той же задачи с помощью одной строки кода.
Изменяемые данные (например, словари или списки) — это структуры, к которым могут быть добавлены новые значения.
Неизменяемые данные, в противоположность изменяемым, после создания остаются неизменными. Посмотрите, как можно преобразовать изменяемый тип данных в неизменяемый.
Списковое включение — самый эффективный способ итерации любого списка. Это итерирование однострочного списка с включением в него цикла. Посмотрите приведенный ниже пример кода, чтобы понять, как это работает.
Так же известные как «моржовый оператор» (walrus operator) — новый синтаксис, который позволит присваивать значения переменным внутри другого выражения. Это, наверное, самое известное и обсуждаемое из нововведений версии 3.8.
Целью введения оператора является повышение читаемости кода, поэтому использовать его (как и все остальные операторы) стоит не при первой же возможности, а только тогда, когда это уместно.
Мы знаем, что функция print выполняет вывод в каждой строке, и если использовать две функции print, они выполнят печать в две строки. Этот пример покажет, как выполнять вывод в той же строке без перехода на новую.
Этот пример используется для превращения каждой первой буквы символов строки в прописную букву. Он работает со строкой из одного или нескольких символов и будет полезен при анализе текста или записи данных в файл и т.п.
Функция map() принимает желаемый тип выходных данных (в нашем случае это int, целые числа) и итерируемый объект (строку, список или кортеж), элементы которого можно превратить в элементы этого типа. После этого другая функция list() преобразует результат в список.