Основы работы со списками и кортежами

Основные определения

Список

Список — упорядоченная изменяемая последовательность объектов произвольного типа. В языке Python списки представлены типом list.

Кортеж

Кортеж — неизменяемый аналог списков, которому соответствует тип данных tuple.

Изменяемая последовательность

Изменяемая последовательность — последвательность, в которой после ее создания возможно изменение количества элементов или присваивание им объектов.

Создание списков и кортежей

Создание списка:

>>> s = []
>>> type(s)
<class 'list'>

>>> s = [1, 2, 3]
>>> type(s)
<class 'list'>

>>> s = list('iterable_obj')
>>> type(s)
<class 'list'>
>>> s
['i', 't', 'e', 'r', 'a', 'b', 'l', 'e', '_', 'o', 'b', 'j']

Создание кортежа:

>>> s = ()
>>> type(s)
<class 'tuple'>

>>> s = 1,
>>> type(s)
<class 'tuple'>

>>> s = tuple('iterable_obj')
>>> type(s)
<class 'tuple'>
>>> s
('i', 't', 'e', 'r', 'a', 'b', 'l', 'e', '_', 'o', 'b', 'j')

Используя конструкторы list() и tuple(), можно выполнять преобразование последовательностей в список либо кортеж.

Операции со списками и кортежами

Списки и кортежи поддерживают общий для последовательностей набор операций. В примерах будет использован список:

>>> lst = [1, 2, 3]
x in s

Проверка на принадлежность элемента x последовательности s:

>>> 3 in lst
True
>>> 4 in lst
False
min(s)

Наименьший элемент последовательности:

>>> min(lst)
1
max(s)

Наибольший элемент последовательности:

>>> max(lst)
3

Методы списков и кортежей

Подобно строкам, списки и кортежи поддерживают различные методы. Ниже будут приведены методы списков. Для кортежей реализованы только операции, которые не меняют исходный объект.

s.append(x)

Вставка элемента в конец списка:

>>> x = [1, 2, 3]
>>> x.append(5)
>>> x
[1, 2, 3, 5]
s.extend(L)

Добавление элементов списка L в конец списка:

>>> x = [1, 2, 3]
>>> x.extend([4, 5, 6])
>>> x
[1, 2, 3, 4, 5, 6]
s.insert(i, x)

Вставка элемента x по индексу i:

>>> x = [1, 2, 3]
>>> x.insert(1, 5)
>>> x
[1, 5, 2, 3]
s.remove(x)

Удаление первого вхождения x из списка:

>>> x = [1, 2, 3, 3, 2, 1]
>>> x.remove(2)
>>> x
[1, 3, 3, 2, 1]
s.pop(x)

Извлечение элемента из списка:

>>> x = [1, 2, 3, 3, 2, 1]
>>> x.pop(1)
2
>>> x
[1, 3, 3, 2, 1]
>>> x.pop()
1
>>> x
[1, 3, 3, 2]
s.clear()

Удаление всех элементов из списка:

>>> x = [1, 2, 3]
>>> x.clear()
>>> x
[]
s.sort()

Сортировка списка:

>>> x = [1, 2, 3, 3, 2, 1]
>>> x.sort()
>>> x
[1, 1, 2, 2, 3, 3]
s.reverse()

Изменение порядка элементов на обратный:

>>> x = [1, 2, 3]
>>> x.reverse()
>>> x
[3, 2, 1]
s.index(x)

Поиск индекса первого вхождения элемента:

>>> x = [1, 2, 3, 3, 2, 1]
>>> x.index(2)
1

Задачи

  1. Пользователь вводит числа a и b. Создать список, содержащий квадраты целых чисел расположенных между ними.

  2. Пользователь вводит числа до тех пор, пока не введет слово end. Поместите введенные числа в список. Выведите на экран только нечетные элементы списка.

  3. Пользователь вводит числа до тех пор, пока не введет слово ‘end’. Поместите введенные числа в список. Подсчитайте количество четных и нечетных элементов в списке.

  4. Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента.

  5. Дан список чисел. Поменяйте местами минимальный и максимальный элемент этого списка.

  6. Дан список чисел. Определите, сколько в нем различных элементов.

  7. Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать. Программа получает на вход последовательность чисел, означающих рост каждого человека в строю. После этого вводится число X – рост Пети. Все числа во входных данных натуральные и не превышают 200. Выведите номер, под которым Петя должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Пети, то он должен встать после них.

  8. Дан список чисел. Циклически сдвиньте элементы списка вправо (A[0] переходит на место A[1], A[1] на место A[2], …, последний элемент переходит на место A[0]).