[ЗВУК] Продолжаем разговор про упорядоченные типы данных. Мы уже умеем выполнять некоторые операции, например, мы можем обратиться к элементу последовательности по его индексу, а в списках мы его можем даже заменить. Давайте теперь поговорим про другие операции, которые с последовательностями мы можем выполнять. Например, как проверить количество элементов, как проверить то, что какой-то элемент входит в последовательность или нет, и можно ли склеить кортежи и списки, как мы склеивали строки. Я думаю, вы уже поняли, что что-то из этого нам знакомо, и мы просто посмотрим, как знакомые нам концепции применяются к новым типам данных. Количество элементов последовательности мы уже умеем определять. Например, если мы проверим, применим функцию len() к строке, мы получим количество символов, которые в нее входят. Если мы применим len() к пустому списку, мы получим ноль, ведь в этом списке ноль элементов. Если мы применим len() к списку или кортежу, в котором есть элементы, мы получим число элементов, которые в него входят. Например, в моем кортеже «молоко» и «хлеб», два элемента. В этом случае, обратите внимание, len() не будет считать общее количество самых минимальных, неделимых элементов, например, не будет считать все символы, которые входят в строку «молоко» и в строку «хлеб» и их сумму, len() найдет именно количество элементов последовательности. Следующий момент для нас новый, научимся проверять наличие элементов последовательности. Когда мы до этого говорили про логические переменные, логические операции, условные операторы, мы либо делали сравнение чисел, например, проверяли, достаточно ли у нас яиц, чтобы приготовить яичницу, либо делали проверку на точное соответствие какой-то строки. Например, мы спрашивали пользователя: «Есть молоко, да или нет?». Если строка была равна «да», то готовили омлет, если нет, то делали что-то другое. Логично, что, наверное, было бы здорово выполнять какие-то действия по результатам проверки, входит ли что-то в последовательность. Например, можно не спрашивать пользователя, есть у нас молоко или нет, а проверить в списке продуктов, которые хранятся в холодильнике, есть ли там молоко. Или, может быть, проверить, есть ли у нас наушники в рюкзаке. Например, если они есть, то будем слушать музыку. Либо проверить, что буква «ю» входит в слово «брошюра». А если она там есть, значит, наверное, мы сделали ошибку в диктанте. И Python, конечно же, умеет делать такие проверки. Давайте посмотрим, как это можно реализовать. Представим, что у нас есть список — это как раз список того, что лежит в нашем рюкзаке. Например, у меня здесь кошелек и наушники. И у нас есть специальный оператор in, с помощью которого мы можем проверять, входит ли какой-то элемент в последовательность или нет. В первом примере я проверяю, входит ли строка «наушники» в список строк backpack. И получаю логическую переменную True, ведь такой элемент в моем списке есть. И я проверяю, есть ли проездной в моем списке, а проездной мы забыли, поэтому получаем False. Оператор in работает не только со списками, работает и с другими последовательностями, и позже мы увидим, что и с другими типами данных, про которые мы пока не знаем. Оператор in можно использовать с логическим оператором not. Тогда по сути мы будем проверять не наличие элемента в списке или в другой последовательности, а его отсутствие. Оператор not нам знаком, он меняет значение логической переменной на противоположное, not true будет false, «не истинно» значит «ложно». Давайте проверять. «Наушники не в моем рюкзаке», наушники в рюкзаке, это утверждение ложно, получаем False. «Проездной не в рюкзаке», проездного действительно там нет, мы его забыли, получаем True. Иногда такую проверку будет удобнее использовать, чем проверку in. И раз оператор in возвращает нам логическую переменную, очевидно, что мы будем часто его использовать в условном операторе. Давайте, например, посмотрим на такую программу. Представьте, что вы едете в университет и по дороге думаете, чем бы заняться, слушать музыку или читать книжку. Будем делать проверку. Если наушники мы не забыли, если они в рюкзаке, слушаем музыку. Если наушников там нет, читаем книжку. Наушники в рюкзаке, поэтому вывод нашей программы будет «Слушаем музыку». Попозже посмотрим и реализуем ее в Python вместе. Следующая операция, про которую мы поговорим — это склейка кортежей и списков. На самом деле концепция нам знакома, мы с вами уже склеивали строки. Давайте посмотрим на пример и вспомним. В переменной a у меня лежит строка «библио», в переменной b — строка «фил», a + b склеиваем, получаю слово «библиофил». С кортежами и списками работает точно так же. Предположим, у меня есть отдельно список того, что я хочу купить в продуктовом, и список того, что мне нужно купить в хозяйственном отделе. Список 1 + список 2, получаю список, в котором все четыре элемента вместе. С кортежами то же самое, кортеж + кортеж, получаю кортеж, в котором все элементы вместе. Но список с кортежем склеить нельзя. Предположим, что у нас теперь список покупок в продуктовом — действительно список, а покупки в хозяйственном — кортеж. Но мы с вами умеем превращать кортеж в список с помощью функции list или превращать список в кортеж с помощью функции tuple. Поэтому мы можем привести их к одному типу данных, например, как в первом примере, к спискам, и получить общий список или, как во втором примере, привести список к кортежу и получить кортеж. Итак, мы с вами поговорили про то, как узнать количество элементов в последовательности, как проверить, есть ли в последовательности элемент, или как проверить то, что он отсутствует, и про склейку кортежей и списков. Что-то из этого нам знакомое, что-то было новое. Давайте теперь посмотрим, как с этим работать в Python. [ЗВУК]