Close

Урок 14. Списки

Списки очень удобны как в повседневной жизни, так и в программировании.

Список в python – это тип данных (list), предназначенный для хранения объектов разных типов. Объекты в списках перечисляются через запятую, а сам список ограничивается квадратными скобками. Ниже несколько примеров списков.

Первый список colors состоит из четырех строк. Второй — scores, хранит пять целых чисел. Последний список хранит значения разных типов, строку, целое число и число с плавающей точкой. Списки из объектов разных типов на практике встречаются достаточно редко.

Получить элемент списка так же легко, как и обратится к любому символу в строке.

Напоминаю, что отчет элементов начинается с 0, таким образом, третий элемент имеет индекс 2. Мы можем получить несколько элементов списка так  же как это делалось со строками.

Как видно из примера, печать colors[0:2] выводит срез списка.

В отличие от строк, списки являются изменяемыми объектами. Мы можем изменять определенные объекты в списке, например, так:

Также мы можем добавлять новые элементы в список. В следующем примере мы создаем пустой список, а затем, с помощью метода append добавляем в него объекты.

С помощью метода remove() мы можем удалять объекты из списка:

Метод extend() можно использовать для добавления более чем одного нескольких объекта к списку.

 

Узнать номер объекта в списке можно с помощью метода index().

Копирование одного списка в другой тоже интуитивно понятно. Попробовав запустить следующий пример, вы можете быть немного удивлены.

Мы пытаемся присвоить строки в списке animals списку large_cats, и затем добавляем новую строку в список large_cats. После этого выводим содержимое animals и видим, что исходный список изменился.

Мы столкнулись с интересной особенностью объектно-ориентированного программирования. После того, как мы указали что large_cats = animals, оба этих идентификатора стали ссылаться на один и тот же объект, размещенный где-то в памяти компьютера. Операция append() изменила сам объект а не ссылки на него. Чтобы нам все же выполнить копирование списка, нам нужно перебрать все элементы исходного списка, например, таким образом:

В квадратных скобках после animals указан диапазон элементов списка который мы хотим получить, а затем присвоить новому списку. Так как числа не указаны, то будут выбраны все элементы списка от первого до последнего.

Вы можете получить такой же результат спомощью метода extend()

Помните о том, что списки являются изменяемыми объектами, поэтому нет необходимости переприсваивать их при использовании методов. Иными словами, мы используем animals.append(«blabla») а не animals = animals.append(«blabla»), как бы это пришлось делать со строками. Это правило работает для всех методов, принадлежащих изменяемым типам. Например, метод sort(). Он сортирует объекты в списке по возрастанию(в алфавитном или числовом порядке, в зависимости от типа объектов).

Если же мы попытаемся присвоить эту операция списку, то увидим следующую картину:

Так как списки могут хранить любые объекты, мы можем даже хранить списки в списках. Сделав список списков мы получим обычную двумерную матрицу. Синтаксически это делается таким образом:

У нас получился список, состоящий из двух объектов, которые сами являются списками. Для обращения к какому-либо элементу по индексу, необходимо сначала указать индекс элемента в родительском списке, а затем — индекс в дочернем. В нашем случае, сначала указываем строку в матрице, а затем столбец.

Если мы попробуем получить элемент, находящийся под индексом two_by_two[1], мы получим список [3, 4].

Содержимое списков необязательно должно быть симметричным и равномерным.

Наконец, если мы хотим создать список из строки, разбив ее на символы, мы используем строковый метод split(). В качестве параметра ему передается символ-разделитель. В примере ниже, таковым является запятая c пробелом.

 

Поделиться: