Мы с вами начинаем разговор об упорядоченных типах данных. До этого мы с вами говорили о простых данных: у нас было просто число, просто логическая переменная, строка. И теперь мы поговорим о таких данных, которые могут в себе что-то хранить, данные контейнера. Было бы здорово, например, хранить строки вместе или, может быть, несколько чисел и потом с ними делать какие-то общие операции. В этом видео мы поговорим, что же такое упорядоченные типы данных, мы введем понятия двух таких типов данных и про один из них поговорим подробнее. На самом деле, с одним типом данных, который внутри себя что-то хранит, мы уже сталкивались — это строка. Про слово "hello" мы говорили, что оно состоит из букв, и каждая буква находится на своем месте, и компьютер знает, на каком месте она находится, и именно поэтому может нам воспроизвести ее как слово, четко зафиксированную последовательность букв или каких-то других символов. Мы с вами говорили про строку, что так как каждая буква закреплена на своем месте, у каждой буквы есть индекс (позиция, порядковый номер, по которому мы можем к этой букве обратиться). Было бы удобно, наверно, хранить не только символы внутри строки, но и иметь какую-то структуру данных, которая может, например, вместе хранить разные строки. Представьте, что мы хотим пойти в магазин, у нас есть список продуктов, мы в Python как-то записали их отдельными строками и теперь хотим их напечатать. Например, это выглядит, как у меня на слайде. И теперь представьте, я хочу напечатать "кефир". Мне надо вспомнить, что "кефир" хранится в переменной "a". А если называть переменную "кефир" тоже как "кефир", то не очень понятно зачем вообще создаем переменную, выглядит не очень удобно. Естественно, нам хочется какие-то вещи, с которыми мы хотим делать одинаковые операции, хранить рядом. Мы и в жизни делаем так: например, мы храним в ящике комода футболки и носки, а в стеллаже — книги и видеоигры. Если мы продолжим разговор про список покупок, представим, как мы бы его записали для себя, например, в записной книжке или в приложении. Возможно, мы бы записали его столбиком, и у нас шел бы "кефир", "сметана", "хлеб", "молоко" и так далее. Если бы мы хотели что-то вычеркнуть, мы бы просто вычеркнули, что-то заменить — вычеркнули и рядом бы написали новое. Было бы здорово, если бы в Python мы, например, могли сложить в какую-то структуру строки, все это сложить в одну переменную и дальше с этими данными работать. В Python действительно есть структуры, которые помогут нам данные организовать подобным образом. Первые из них — это список и кортеж, позже мы поговорим про некоторые другие. Такие структуры мы будем называть последовательностями, ведь в них, как и в строках, элементы располагаются в определенном порядке. У элементов есть индекс, по которому мы можем обратиться. Списки кортежа и строки мы теперь будем называть последовательностями. Начнем разговор про список. Самый важный вопрос: как объяснить Python, что у нас не просто перечень каких-то элементов, чисел, строк, а, на самом деле, мы хотим их все положить внутрь какого-то контейнера? Здесь этим сигналом выступают квадратные скобки. Мы ставим квадратные скобки и внутри них перечисляем какие-то другие типы данных через запятую, например, строки или числа. В Python такой тип данных называется list, и точно так же он будет называться в англоязычной документации. Элементов в таком списке может быть сколько угодно. На самом деле там есть ограничение, но оно настолько большое, что вряд ли мы с вами в наших задачах когда-нибудь его превысим. Элементы могут быть любого типа, то есть у нас может быть список из строк, из чисел, а может быть даже смешанный. Примеры мы сейчас посмотрим. Список, конечно же, можно сохранить в переменную и дальше с ним работать, уже обращаясь к этой переменной. Это мы уже умеем. Раньше мы просто сохраняли в переменной строки, логические переменные, теперь сможем сохранять еще и списки. Давайте посмотрим на примеры. Первый — это список строк. Смотрите, в моем контейнере, в моих квадратных скобках две строки: "хлеб" и "сыр". Список может быть списком чисел. Здесь, например, у меня перечислены первые несколько простых чисел. Или даже список логических переменных, например, мы описываем человека — студент он или нет, True или False. Это может быть даже смешанный список, например, мы описываем товар в магазине: его название, его цена и срок годности еще не истек. На самом деле, структуры могут быть более сложные, может быть даже список списков или список кортежей, о которых мы поговорим позже, но о них — на следующих неделях. Давайте теперь посмотрим, как создать список. Во-первых, мы можем создать пустой список. Это нам пригодится, когда позже мы научимся в списки добавлять элементы, и там очень часто мы будем создавать пустой список и потом по какому-то условию наполнять его, например, добавлять в него только четные числа, или только слова, начинающиеся на букву "я", или какое-нибудь другое условие. Пустой список можно создать с помощью пустых квадратных скобочек (это будет пустой список) либо вызвав функцию list, которая называется так же, как тип данных, и создает нам пустой контейнер, пустой список. Следующий важный момент: как считать список с клавиатуры. Мы с вами умеем считывать другие данные. Например, с помощью функции input() мы считываем строки. Если мы можем дальше их перевести в целые или вещественные числа, мы это делаем с помощью функций IND или float. Было бы здорово, если бы у нас была какая-то функция, которая из каких-то строк делала бы нам списки. Например, очень логично, если я ввожу через пробел "молоко", "хлеб" и "сметана", как-то объяснить Python, что я хочу из этого получить список, где "молоко", "хлеб" и "сметана" — это отдельные элементы. Логично, то, что между пробелами — отдельные элементы, и у нас есть такая функция. Обратите внимание, синтаксис довольно хитрый, мы такого пока не видели. Я ввожу строку (мои слова через пробел), ставлю точку и пишу название команды split(). "Split" от английского "разделить", здесь вроде бы все понятно. Такая конструкция даст мне список, где у меня действительно будут отдельными элементами "хлеб", "молоко" и "сметана", как я и хотела. Давайте разбираться, что здесь написано:.split() пишется через точку, потому что на самом деле это не совсем привычная нам функция, мы с таким еще не сталкивались. Такие функции называются методы, и их смысл в том, что они работают только с определенным типом данных. Мы с вами позже будем говорить больше про методы, про такие специальные команды, и там мы еще вернемся к определению. Но.split() — это первый случай, где мы с этим встречаемся. Итак,.split() разбивает строку на элементы и возвращает нам список из этих элементов. По умолчанию разделителем выступают пробельные символы (не только пробелы, но еще некоторые специальные символы). Подробнее про это поговорим, когда будем работать со.split() в Python. Что делать, если разделитель какой-то другой, например, запятая, точка с запятой или, может быть, даже тире? Не беда, ведь в.split() мы можем указать в качестве аргумента тот разделитель, по которому мы хотим разбивать, если он отличается от пробельного символа. Как в моем примере: теперь "хлеб", "молоко" и "сметану" я записала через запятую, но указав в.split() запятую в качестве аргумента, я смогла их по этой запятой разбить и получить список опять из трех элементов, как я и хотела. В следующих видео мы посмотрим, как все это сделать в Python Jupyter Notebook.