Выберите методы которые есть у кортежей
Перейти к содержимому

Выберите методы которые есть у кортежей

  • автор:

 

[ Сборник задач ]
Тема 6. Работа с кортежами

Python Workbook Cover T1

Кортеж ( tuple ) – неизменяемый тип данных. Эта последовательность является упорядоченной и итерируемой, к элементам можно получить доступ по индексу.

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

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

Углубиться в тему можно при помощи namedtuple из модуля collections , которые позволяют давать имена каждому элементу последовательности, делая эту структуру данных в чем-то похожей на словарь.

Читайте также

Two

Как видно, и в выражении А, и в выражении Б мы создаем 2 объекта с одинаковым содержимым. В общем случае Python присвоит им разные адреса в памяти.
Однако не стоит забывать, что кортеж – неизменяемый тип данных. Какой смысл давать двум одинаковым кортежам разные адреса в памяти? Мы их все-равно не сумеем модифицировать. Следовательно, оба кортежа будут иметь идентичный адрес в памяти, а по сути, ссылаться на один объект.

Пример – Интерактивный режим
>>> (id(lst_1), id(lst_2)) # Разные адреса в памяти
43327176 43368072
>>> (id(tpl_1), id(tpl_2)) # Один и тот же адрес
13734216 13734216
>>> (lst_1 == lst_2, lst_1 is lst_2)
True False
>>> (tpl_1 == tpl_2, tpl_1 is tpl_2)
True True

У кортежей есть 2 встроенных метода:
1. count()
Ведет подсчет количества конкретного элемента в кортеже.
2. index()
Возвращает индекс первого появления элемента. Может смещать поиск от и до определенного индекса при задании дополнительных параметров.

Пример – Интерактивный режим
>>> tpl = (1, 2, 2, 3, 1, 2, 4, 3, 2, 2)
>>> tpl.count(2) # Сколько всего двоек в кортеже
5
>>> tpl.index(2) # Индекс первого появления значения 2
1
>>> tpl.index(2, 2) # Индекс первого появления значения 2 начиная с индекса 2
2
>>> tpl.index(2, 4, 6) # Индекс первого появления значения 2 начиная с индекса 4 и заканчивая индексом 6 не включительно
5

Создавать любой кортеж можно 3 способами:
1. Через конструктор tuple
2. При помощи круглых скобок
3. С помощью запятых

Пример – Интерактивный режим
# Пустой кортеж можно создать лишь двумя способами
>>> empty_tuple_1 = tuple()
>>> empty_tuple_2 = ()
>>> (empty_tuple_1, empty_tuple_2)
() ()

# Кортеж с одним элементом создается двумя способами
>>> single_tuple_1 = (1, )
>>> single_tuple_2 = tuple([1])
>>> (single_tuple_1, single_tuple_2)
(1,) (1,)

# Кортеж с несколькими элементами создается 3 способами
>>> plural_tuple_1 = tuple([1, 2, 3, 4, 4])
>>> plural_tuple_2 = (1, 2, 3, 4, 4)
>>> plural_tuple_3 = 1, 2, 3, 4, 5
>>> (plural_tuple_1, plural_tuple_2, plural_tuple_3)
(1, 2, 3, 4, 4) (1, 2, 3, 4, 4) (1, 2, 3, 4, 5)

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

Пример – Интерактивный режим
# Кортеж с изменяемым элементом внутри
>>> tpl = ([1, 2], 3, 4)
>>> len(tpl)
3
>>> tpl
([1, 2], 3, 4)
>>> tpl[0].append(20)
>>> len(tpl)
3
>>> tpl
([1, 2, 20], 3, 4)

Несмотря на сходство namedtuple и словаря, между ними имеются отличия:
1. В словарь можно добавлять новые значения, а в именованный кортеж нет
2. Словари считаются более информативными и наглядными
3. Для создания словаря требуется меньше строчек кода
4. К значению словаря получаем доступ через ключ, а в именованном кортеже через точечную нотацию или индекс.

Кортежи в Python

Кортеж в Python похож на список. Только в отличие от списка кортеж — неизменяемый, то есть менять его элементы после создания нельзя.

Как создать кортеж

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

Кортеж может иметь любое количество элементов разных типов (целые числа, числа с плавающей точкой, списки, строки и т. д).

Вывод:

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

Вывод:

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

Вывод:

Как получить элемент кортежа

1. По индексу

Мы можем использовать оператор индекса [] , чтобы получить доступ к элементу кортежа.

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

 

Кортеж из 9 элементов будет иметь индексы от 0 до 8. Попытка получить доступ к индексу за пределами диапазона индексов кортежа (в нашем случае 9, 10 и т. д.) приведет к ошибке IndexeError.

Индекс должен быть целым числом, поэтому мы не можем использовать float или другие типы в качестве индекса. Это приведет к ошибке TypeError.

Точно так же доступ к вложенным кортежам осуществляется с помощью вложенной индексации, как показано в примере ниже.

Вывод:

2. По отрицательному индексу

Python допускает отрицательную индексацию коллекций (наборов значений). Она работает и с кортежами.

Индекс -1 отсылает к последнему элементу, -2 — ко второму элементу с конца и так далее.

Вывод:

3. С помощью срезов

Получить доступ к диапазону элементов в кортеже можно с помощью оператора срезов : .

Использование срезов еще называют слайсингом, от английского slicing — «нарезка».

Вывод:

Как изменить кортеж

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

Переназначить кортеж тоже можно.

Вывод:

В Python кортежи можно объединить с помощью оператора + . Это называется конкатенацией.

С помощью оператора * можно повторить элементы в кортеже заданное количество раз.

Оба оператора + и * приводят к созданию нового кортежа.

Вывод:

Как удалить кортеж

Изменять элементы кортежа нельзя. Это значит, что удалять их тоже нельзя.

В Python можно только полностью удалить кортеж — с помощью ключевого слова del .

Вывод:

Методы кортежа

Методы добавления или удаления элементов недоступны для кортежа в силу его неизменяемости.

Для кортежа существует только два метода: .count() и .index() .

Вывод:

Другие операции с кортежами

1. Проверка на вхождение в кортеж

Мы можем проверить, существует ли тот или иной элемент в кортеже или нет, с помощью ключевого слова in и not in .

Вывод:

2. Итерирование по кортежу

Для перебора элементов кортежа можно использовать цикл for .

Вывод:

Преимущества кортежа над списком

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

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *