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

от admin

[ Сборник задач ]
Тема 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 .

Вывод:

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

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

Читать:
Amd radeon hd 7600m series характеристики сколько памяти

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

Вывод:

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

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

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

Вывод:

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

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

Вывод:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Задачи¶

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

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

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

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

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

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

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

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

Операции над кортежами. Обход кортежа. Методы работы с кортежами

Любому объекту с именем можно присвоить кортеж. Примеры присваивания кортежей.

2. Операция tuple() – создание кортежа из итерированного объекта

Кортеж можно создать с помощью операции tuple() . Эта операция принимает параметром итерированный объект, которым может быть другой кортеж, список, строка.

Например

3. Операция T[i] . Получить элемент по индексу

Элемент кортежа может быть получен по индексу.

Пример.

4. Операция T[i][j] . Получить доступ к составному элементу в кортеже

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

  • T – имя кортежа;
  • i – позиция вложенного объекта в кортеже;
  • j– позиция элемента во вложенном объекте.

Пример.

5. Операция T[i:j] . Взятие среза в кортеже

С помощью операции взятия среза можно получить другой кортеж. Общая форма операции взятия среза для кортежа следующая

  • T2 – новый кортеж, который получается из кортежа T1 ;
  • T1 – исходный кортеж, для которого происходит срез;
  • i , j – соответственно нижняя и верхняя границы среза. Фактически берутся ко вниманию элементы, лежащие на позициях i , i+1 , …, j-1 . Значение j определяет позицию за последним элементом среза.

Операция взятия среза для кортежа может иметь модификации. Более подробно об использовании срезов в Python описывается в теме:

  • 2.3. Доступ по индексам. Срезы. Получение фрагмента строки. Примеры

Пример.

6. Конкатенация +

Для кортежей можно выполнять операцию конкатенации, которая обозначается символом + . В простейшем случае для конкатенации двух кортежей общая форма операции следующая

  • T1 , T2 – кортежи, для которых нужно выполнить операцию конкатенации. Операнды T1 , T2 обязательно должны быть кортежами. При выполнении операции конкатенации для кортежей, использовать в качестве операндов любые другие типы (строки, списки) запрещено;
  • T3 – кортеж, который есть результатом.

Пример.

7. Повторение *

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

  • T2 – результирующий кортеж;
  • T1 – исходный кортеж, который нужно повторить n раз;
  • n – количество повторений кортежа T1 .

Пример.

8. Обход кортежа в цикле. Пример

Элементы кортежа можно последовательно просмотреть с помощью операторов цикла while или for .

Пример

Результат выполнения программы

10. Методы работы с кортежами
10.1. Метод index() . Поиск позиции элемента в кортеже

Чтобы получить индекс (позицию) элемента в кортеже, нужно использовать метод index() . Общая форма вызова метода следующая

  • T – кортеж, в котором осуществляется поиск;
  • pos – позиция (индекс) элемента item в кортеже. Первому элементу соответствует позиция 0. Если элемента нет в кортеже, генерируется исключительная ситуация. Поэтому, перед использованием метода index() рекомендуется делать проверку на наличие элемента (с помощью операции in ).

Пример. В примере, в перечне названий дней недели вычисляется порядковый номер дня.

Результат работы программы

10.2. Метод count() . Количество вхождений элемента в кортеж

Чтобы определить количество вхождений заданного элемента в кортеж используется метод count , общая форма которого следующая:

Related Posts