Списки и кортежи в Python

Установка Python 

Выбор текстового редактора 

Запуск программ Python в командной строке 

Числа и арифметические операторы Python 

Строки и функция print в Python 

Списки и кортежи в Python 

Сегментация последовательностей в Python 

Цикл for и функция range в Python 

Команда if и функция input в Python 

Словари в Python 

Множества в Python 

Цикл while в Python 

Функции в Python 

Классы в Python 

Файлы и исключения в Python 

Функции json. Сохранение данных Python 

Тестирование функций и классов на Python

Python массивы. Библиотека NumPy

Список в Python -  это набор элементов, следующих в определенном порядке.  Списки позволяют хранить в одном месте данные, сколько бы их не было, один элемент или тысяча элементов. В список можно поместить любую информацию, даже не связанную между собой. Так как список обычно содержит более одного элемента, рекомендуется называть их именем во множественном лице. Списки могут динамически изменять свои размеры, увеличиваясь и изменяясь во время выполнения программы. Кортежи в отличие от списков изменяться не могут. Длина кортежа определяется количеством элементов в нем, и в процессе выполнения программы изменяться не может. Списки и кортежи обладают многими общими возможностями. 

Содержание страницы
1. Создание списка в Python
2.1. Обращение к элементам списка
2.2. Индексы начинаются с 0, а не с 1
3.1. Использование элементов списка в строках
3.2. Использование элементов списка в выражениях
4.1. Изменение элементов в списке
4.2. Добавление элементов в конец списка. Метод append()
4.3. Вставка элемента в список.  Метод insert()
4.4. Удаление элемента в списке командой del()
4.5. Удаление элемента в списке с использованием метода pop()
4.6. Удаление элементов в списке по значению. Метод remove()
4.7. Очистка списка. Метод clear()
5.1. Постоянная сортировка списка методом sort()
5.2. Временная сортировка списка функцией sorted()
6. Определение длины списка. Функция len()
7. Ошибки при работе со списками
8. Кортежи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Создание списка в Python.

В языке Python список обозначается квадратными скобками [ ]. В списках обычно хранятся однородные данные, то есть значения одного типа. Пример списка из пяти элементов.

cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]

Так же в списках можно хранить разнородные данные, то есть разных типов. Например, в следующем списке хранится имя студента(строка), фамилия(строка), его средняя оценка(float), год окончания заведения(int)

id = [ 'Jon', 'Bond',  3.54, 2020 ]

 

2.1. Обращение к элементам списка Python. 

Списки представляют собой упорядоченные наборы данных, поэтому для обращения к элементу списка, нужно сообщить Python позицию(индекс) элемента. Для этого в начале укажите имя списка, а затем индекс элемента в квадратных скобках [ ]

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars
['audi', 'bmw', 'ford', 'kia', 'land rover']
>>> cars[1]
'bmw'
>>> cars[1].title()
'Bmw'

В первом случае выводится элемент с индексом 1. Во втором случае выводится этот же элемент с заглавной буквы, с помощью метода title().

 

2.2. Индексы начинаются с 0, а не с 1.

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

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]      
>>> cars[1]
'bmw'
>>> cars[3]
'kia'

>>> cars[-1]
'land rover'
>>> cars[-3]
'ford'

В Python есть возможность для обращения сразу к последнему элементу списка. Для этого нужно запросить элемент с индексом [-1].  Этот синтаксис так же распространяется и на другие отрицательные значения индексов. Индекс [-3] возвращает третий элемент с конца, и т.д.

 

3.1. Использование элементов списка в строках.

Отдельные элементы списков могут использоваться для построения сообщений. Для этого можно воспользоваться f-строками. Возьмем предыдущий список автомобилей и извлечем из него один элемент.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> message = f" Мой первый автомобиль {cars[2].title()}."
>>> print(message)
Мой первый автомобиль Ford.

В результате строится сообщение, в котором используется элемент с индексом 2 и сохраняется в переменной. 

 

 

3.2. Использование элементов списка в выражениях. 

Элементы списка могут так же использоваться как переменные в выражениях. Предположим, есть список каких-то чисел и вам нужно проделать с ними арифметические операции.

>>> a = [1, 5, 70, 4, 28]
>>> a[0] + a[2]
71
>>> a[2] / a[1]
14.0

 

4.1. Изменение элементов в списке Python. 

Как правило вы будете создавать динамические списки. Это означает, что во время выполнения программы элементы будут добавляться и удалятся. Изменение элементов в списке Python напоминает синтаксис обращения к элементу списка. Для того чтобы изменить элемент, укажите имя списка и индекс изменяемого элемента в квадратных скобках [ ], затем задайте новое значение, которое присвоится этому элементу. Например, в нашем списке машин мы хотим поменять бренд 'ford' на 'opel'.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars [2] = 'opel'
>>> cars
['audi', 'bmw', 'opel', 'kia', 'land rover']

 

4.2. Добавление элементов в конец списка Python. Метод append(). 

Самый простой способ добавление элемента в список - это присоединение его в конец списка. Для этого используется метод append(). Метод append() присоединяет элемент в конец списка, при этом остальные элементы списка не изменяются и не сдвигаются. 

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars.append('opel')
>>> print(cars)
['audi', 'bmw', 'ford', 'kia', 'land rover', 'opel']

Если вы хотите начать с пустого списка и добавлять в него элементы, то так же рекомендуется использовать метод append().  Данные, которые захочет сохранить пользователь часто не известны после запуска программы. Создайте для него пустой список, а затем присоединяйте новые данные. 

>>> cars = [ ]
>>> cars.append('audi')
>>> cars.append('bmw')
>>> cars.append('kia')
>>> cars.append('land rover')
>>> print(cars)
['audi', 'bmw', 'kia', 'land rover']

 

 

4.3. Вставка элемента в список Python.  Метод insert().

Для вставки элемента в определенную позицию списка существует метод insert(). Для этого следует указать индекс и значение нового элемента.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars.insert(0, 'opel')
>>> print(cars)
['opel', 'audi', 'bmw', 'ford', 'kia', 'land rover']

В этом примере значение 'opel' вставляется в начало списка, а все остальные значения при этом сдвигаются на одну позицию индекса.

 

4.4. Удаление элемента в списке командой del(). 

Если вы знаете индекс элемента, который нужно удалить, то легко можно воспользоваться командой del(). Команда del() позволяет удалить любой элемент из любой позиции списка. 

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> del cars[2]
>>> print(cars)
['audi', 'bmw', 'kia', 'land rover']
>>> del cars[0]
>>> print(cars)
['bmw', 'kia', 'land rover']

При выполнении команды del() элемент удаляется навсегда.

 

 

4.5. Удаление элемента списка с использованием метода pop().

Не всегда требуется удаление элемента из списка навсегда. Например, в веб-приложение пользователь из списка активных участников, переходит в список не активных. Метод pop() удаляет элемент из списка, но позволяет с ним еще работать после удаления. 

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> sale = cars.pop(3)
>>> print(f"Автомобиль марки {sale.title()} сегодня был продан.")
Автомобиль марки  Kia  сегодня был продан.
>>> cars
['audi', 'bmw', 'ford', 'land rover']

Сначала элемент извлекается из списка методом pop() и сохраняется в переменной sale. Затем эта переменная уже используется для вывода сообщения с помощью f-строки.

После каждого использования метода pop() элемент удаляется из списка.

 

4.6. Удаление элементов списка по значению. Метод remove()

Когда индекс удаляемого элемента не известен, но вы знаете значение этого элементы, можно воспользоваться методом remove(). Предположим, нам нужно удалить из списка автомобиль ford. Ниже в примере значение ford удаляется из списка.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars.remove('ford')
>>> cars
['audi', 'bmw', 'kia', 'land rover']

Важно: Метод remove() удаляет только первое вхождение заданного значение в списке. Если в списке значения могут повторяться, то нужно воспользоваться циклом для перебора.

 

4.7. Очистка списка. Метод clear().

Чтобы удалить все элементы списка используйте метод clear().

>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw' ]
>>> cars.clear()
>>> print(cars)
[]

 

5.1. Постоянная сортировка списка методом sort(). 

Списки в Python легко отсортировать. Для этого есть метод sort(). Данный метод сортирует элементы по алфавиту. Если список состоит из чисел, то отсортирует их по возрастанию.

>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw' ]
>>> cars.sort()
>>> print(cars)
['audi', 'bmw', 'ford', 'land rover', 'opel']
>>> a = [ 560, 25, 452, 14, 945, 643, 1, -42, -5 ]
>>> a.sort()
>>> print(a)
[-42, -5, 1, 14, 25, 452, 560, 643, 945]

Чтобы отсортировать список по убыванию, в методе sort() используйте не обязательный аргумент reverse.(reverse=True)

>>> cars.sort(reverse=True)
>>> print(cars)
['opel', 'land rover', 'ford', 'bmw', 'audi']

Метод sort() изменяет список и вернутся к исходному порядку не получится. 

 

5.2. Временная сортировка списка функцией sorted().

Для того чтобы исходный список не менялся, но для удобства работы вы могли получить отсортированный список, существует функция sorted(). Функция sorted() возвращает список в отсортированном порядке.

>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw' ]
>>> print(sorted(cars))
['audi', 'bmw', 'ford', 'land rover', 'opel']
>>> print(cars)
['ford', 'opel', 'audi', 'land rover', 'bmw']

На примере видно, что исходный список cars остался прежним и не изменился. 

 

 

6. Определение длины списка. Функция len().

Для того чтобы быстро определить длину списка используйте функцию len()

>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw' ]
>>> print(len(cars))
5

 

7. Ошибки при работе со списками Python

Одна из основных ошибок при работе со списками, это ошибка индексирования. Например, вы пытаетесь вернуть элемент с индексом 5. В результате Python при работе со списком не находит элемент с этим индексом, происходит ошибка индексирования

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]         
>>> cars [5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

Индекс должен быть целым числом или выражением, дающим целочисленный результат. При попытке использования нецелочисленного индекса происходит ошибка TypeError. Так же ошибка индексирования образуется при попытке обратиться к элементу пустого списка.

 

8. Кортежи в Python. 

Когда требуется создать не изменяемый список, на помощь приходят кортежи. В кортежах часто хранятся разнородные данные, но данные также могут быть однородными. Длина кортежа определяется количеством элементов в кортеже и не может меняться во время выполнения программы. Кортеж выглядит как список, но вместо квадратных скобок используются круглые ( ).  При выводе кортежа Python  отображает его содержимое в круглых скобках. Для упаковки элементов в кортеж можно перечислить их через запятую. 

>>> student = ()
>>> len(student)
0
>>> student = 'Ivan', 'Ivanov', 3.5
>>> print(student)
('Ivan', 'Ivanov', 3.5)
>>> print(student[1])
Ivanov

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

>>> student[1] = 'Petrov'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Когда вы захотите изменить элемент в кортеже, Python выдаст ошибку о невозможности изменения элементов.  TypeError: 'tuple' object does not support item assignment.

 

Далее: Сегментация последовательностей

Назад: Строки и функция print в Python