Перейти к содержанию

2.1. Представление о списках

     Мы добрались до второго модуля. В нём мы обсудим абстрактные типы данных. Не пугайтесь названия. Они созданы, чтобы программист мог работать с моделями реального мира более эффективно. Что это значит? Возьмём, к примеру, телефонный справочник. Если работать с каждым номером и фамилией на уровне отдельной переменной то программа будет громоздкая и непонятная. Как же будет удобно, если объект обладает операциями-аналогами реального справочника - добавить фамилию, найти фамилию. Программист будет мыслить на более абстрактном уровне и успешно решать задачи.
     Начнём с самого простого типа - список. Список – это структура данных, которая содержит упорядоченный набор элементов, т.е. хранит последовательность элементов. Это легко представить, если вспомнить список покупок, в котором перечисляется, что нужно купить. Абстрактные типы помимо прочего используют методы из объектно-ориентированного программирования. Только не пугайтесь! Для нас это некоторые функции, которые относятся к объекту (непример, списку) и пишутся через точку.

Главное

  • Для управления сложностью используются абстрактные типы данных.
  • Список хранит последовательность значений.
  • Метод - функция, которая относиться к объекту и записывается через точку.

Анатомия списков

Вы можете создать список для хранения букв алфавита, цифр от 0 до 9 или имен всех членов вашей семьи. В список можно поместить любую информацию, причем данные в списке даже не обязаны быть как-то связаны друг с другом. Список обозначается квадратными скобками ([]), а отдельные элементы списка разделяются запятыми. Пример списка с названиями моделей машин:

cars = ['audi', 'bmw', 'honda', 'kia']
print(cars)

После вывода элементы списка появляются в квадратных скобках: ['audi', 'bmw', 'honda', 'kia'].
Пользователям такое представление не подойдет. Разберемся, как обратиться к отдельным элементам в списке.
Можем также создать пустой список чтобы потом наполнять:
empty_list = []

Главное

  • Список обозначается квадратными скобками
  • Элементы списка перечисляются через запятую
  • Пустой список обозначается пустыми квадратными скобками

На первый-второй рассчитайсь!

Списки - упорядоченные наборы данных. Для обращения к любому элементу списка следует указать его индекс (номер по порядку). Индексы начинаются с 0, а не с 1. Укажите имя списка, затем индекс элемента в квадратных скобках. Например, название первой машины в списке cars:

cars = ['audi', 'bmw', 'honda', 'kia']
print(cars[0])

Когда мы запрашиваем один элемент из списка, Python возвращает только этот элемент без квадратных скобок
или кавычек. В нашем случае audi.
Именно такой результат должны увидеть пользователи — чистый, аккуратно отформатированный вывод.
Элементы списка могут использоваться как переменные. Проверим:
numbers = [3, 4]
print(numbers[0]+numbers[1])

Результат - 7.

Главное

  • Для обращения к элементу предназначен индекс
  • Индексы начинаются с 0
  • Синтаксис обращения: имя_списка[индекс]

Молодой человек, вам на первый или нулевой?

Как ни странно, первый элемент списка находится в позиции 0, а не в позиции 1. Этот принцип встречается в большинстве языков программирования, считайте что так исторически сложилось. Если вы получаете неожиданные результаты, определите, не допустили ли вы простую ошибку «смещения на 1».
Второму элементу списка соответствует индекс 1. В этой простой схеме индекс любого элемента вычисляется уменьшением на 1 его позиции в списке. Например, чтобы обратиться к четвертому элементу списка, следует запросить элемент с индексом 3.
В следующем примере выводятся названия велосипедов с индексами 1 и 3:

cars = ['audi', 'bmw', 'honda', 'kia']
print(cars[1])
print(cars[3])

При этом выводится второй и четвертый элементы списка:
bmw
kia

В Python также существует специальный синтаксис для обращения к последнему элементу списка. Если запросить элемент с индексом –1, всегда возвращается последний элемент в списке:
print(cars[-1])

Фрагмент вернет значение 'kia'. Этот синтаксис весьма полезен, потому что при работе со списками часто требуется обратиться к последним элементам, не зная точное количество элементов в списке. Синтаксис также распространяется на другие отрицательные значения индексов. Индекс –2 возвращает второй элемент от конца списка, индекс –3 — третий элемент от конца и т. д.

Главное

  • Индекс в списке = порядковый номер - 1
  • Индексы со знаком минус предназначены для отсчёта с конца списка

Всё, пора что-то менять

Синтаксис изменения элемента напоминает синтаксис обращения к элементу списка. Чтобы изменить элемент, укажите имя списка и индекс изменяемого элемента в квадратных скобках. Присвойте новое значение и вуаля!
Допустим, имеется список мотоциклов, и первым элементом списка хранится строка 'honda'. Как изменить значение первого элемента?

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)

Из вывода видно, что первый элемент действительно изменился, а остальные элементы списка сохранили прежние значения:
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']

Изменить можно значение любого элемента в списке, не только первого. Главное, указать индекс. Кстати, индекс может быть и переменной!
Попробуем:
beers = ['baltika', 'ohota', 'amur']
print(beers)
i = 1
beers[i] = 'patra'
print(beers)

Главное

  • Для изменения элемента списка необходимо присвоить новое значение по индексу.
  • Индекс может быть также и переменной

Краткое содержание

- Список обозначается квадратными скобками ```motorcycles = ['honda', 'yamaha', 'suzuki']```
- Изменение списка как присвоение по индексу ```motorcycles[0] = 'oka'```
- Индекс может быть переменной ```motorcycles[i] = 'oka'```

Задачи