Работа с кортежами в Python (tuple): как создать кортеж, добавить элемент
Представьте себя функцией. Да, это не просто, и все же…
Вас зовут get_contacts
и вы умеете находить контакты человека по email-адресу: его адрес, имя и номер телефона. Вы не прочь поделиться информацией с другими, но Python вам это запрещает. Нельзя возвращать так много данных разом, результат у функции может быть только один. Вы можете выбрать что-то одно, самое важное: адрес, имя, или телефон человека. Или можете проявить изобретательность и упаковать все свои данные в одну переменную.
Как упаковать данные в кортеж
Для функции get_contacts(email)
доступны несколько способов упаковки данных в более сложную структуру: словарь dict()
, кортеж tuple()
и еще несколько других. Рассмотрим подробнее последний вариант — tuple
, или по-русски кортеж.
Предположим, вы вызвали функцию get_contacts('dmitry@example. com')
, она нашла такого человека и хочет вернуть его контакты:
full_name = 'Никифоров Дмитрий Анатольевич' city = 'Москва' phone_number = '929-876-54-32'
Функция создает кортеж — tuple()
—, чтобы поместить в него все контакты:
contacts = (full_name, city, phone_number)
Круглые скобки и запятые указывают Python, что из перечисленных переменных full_name
, city
и phone_number
нужно создать новую структуру данных:
print(type(contacts)) # выведет <class 'tuple'> print(contacts)
Последний вызов print()
выведет на экран такое:
('Никифоров Дмитрий Анатольевич', 'Москва', '929-876-54-32')
Теперь функция get_contacts
сможет вернуть любое количество данных. Все они будут упакованы в один кортеж — tuple
.
Что делать, если получили tuple
Разберем как работать с tuple на примере стандартной функции divmod
. Она возвращает результат деления с остатком:
divmod(100, 3) # выведет (33, 1) divmod(2, 3) # выведет (0, 2)
Функция divmod
возвращает кортеж из двух чисел — результата целочисленного деления и остаток от деления.
Мы можем сохранить результат в переменную:
div_tuple = divmod(100, 3) print(div_tuple) # выведет (33, 1)
Добраться до каждого из двух чисел можно по индексу:
div_tuple = divmod(100, 3) print(div_tuple[0]) # выведет 33 print(div_tuple[1]) # выведет 1
Индексы в коде [0]
и [1]
сильно осложняют чтение, поэтому полезно давать говорящие названия:
div_tuple = divmod(100, 3) int_division = div_tuple[0] remainder = div_tuple[1] print(int_division) # выведет 33 print(remainder) # выведет 1
Распаковка кортежа
При работе с кортежами очень часто приходится доставать все данные в отдельные переменные:
int_division = div_tuple[0] remainder = div_tuple[1]
Это встречается настолько часто, что в Python ввели упрощенную короткую запись:
(int_division, remainder) = divmod(100, 3) print(int_division) # выведет 33 print(remainder) # выведет 1
Запись похожа на создание кортежа — те же скобки и запятые, но работает это в обратную сторону. Называется “распаковкой”.
Если в кортеже больше одного элемента, то скобки указывать необязательно. Python любит чистый код:
int_division, remainder = divmod(100, 3) print(int_division) # выведет 33 print(remainder) # выведет 1
Последняя форма записи распаковки наиболее распространена и рекомендуется к использованию.
Скобки не обязательно указывать и при создании кортежа, но этот прием может усложнить чтение кода, будьте с ним осторожны:
contacts = full_name, city, phone_number
В коде внутри функций часто встречается еще более короткая запись:
return full_name, city, phone_number
Вызов return
сообщает интерпретатору Python, что функция завершает свою работу и хочет вернуть результат. А все перечисленное справо от return
будет упаковано в кортеж — tuple
.
Как добавить элемент в кортеж
Добавить в кортеж ничего нельзя. Он неизменяемый, однажды созданный кортеж никак нельзя изменить. Зато можно создать новый:
old_tuple = (1, 2) new_tuple = old_tuple + (3, 4) print(new_tuple) # Выведется (1, 2, 3, 4)
Если вы хотите добавить только один элемент, то велик соблазн написать так:
old_tuple = (1, 2) new_tuple = old_tuple + 3
TypeError: can only concatenate tuple (not "int") to tuple
Эта ошибка значит, что вы попытались сложить кортеж и число, а Python умеет складывать только кортежи. Поэтому придётся сделать из вашего элемента кортеж, но с одним элементом внутри:
old_tuple = (1, 2) new_tuple = old_tuple + (3,) print(new_tuple) # Выведется (1, 2, 3)
Что ещё почитать
- Чем отличаются list, tuple и set
Язык программирования «Python». Кортежи (tuple). Операции и методы кортежей
Кортежи (tuple)
Кортеж (tuple) — упорядоченная коллекция элементов.
Кортежи очень похожи со спискама(list), за исключением следующих свойств:
- Кортежи определяются путем включения элементов в круглые скобки «()» в отличии от списков, где элементы заключаются внутри квадратных скобок «[]»;
Создание кортежа
Первый способ — перечислить внутри круглых скобок элементы через запятую
>>> a = (1, True, 'hello', 5) >>> a (1, True, 'hello', 5) >>> type(a) <сlass 'tuple'>
Второй способ создания это перечисление нескольких элементов через запятую без скобок. В таком случае все равно создаться кортеж.
>>> a = 1,True,'hello',5 >>> a (1, True, 'hello', 5)
Кортеж получится даже если вы укажите один элемент, но после него поставите запятую
>>> a = 1, >>> a (1,)
Но если вы поставите один элемент без запятой или внутри скобок, это уже будет не кортеж.
>>> a = 1 >>> a 1 >>> b = (5) >>> b 5
Также кортеж можно создать при помощи функции tuple() и передать ей итерируемый объект.
>>> a = tuple([1,2,3]) >>> a (1, 2, 3) >>> b = tuple(range(4)) >>> b (0, 1, 2, 3) >>> c = tuple('hello') >>> c ('h', 'e', 'l', 'l', 'o') >>> d = tuple(1) Traceback (most recent call last): File "", line 1, in d = tuple(1) TypeError: 'int' object is not iterable#19>
В последнем примере мы переделали в функцию tuple() целое числа, и из-за того что оно не являются итерируемой последовательностью возникла ошибка.
Для создания пустого кортежа нужно поставить пару пустых круглых скобок или вызвать функцию tuple() без параметров:
>>> a = () >>> a () >>> b = tuple() >>> b ()
Операции над кортежами
Нахождение длины
>>> a = (1, 2, 3) >>> len(a) 3 >>> len(()) 0
Сложение (спецление) кортежей
>>> a = (1, 2, 3) >>> b = (4, 5) >>> a+b (1, 2, 3, 4, 5) >>> b+a (4, 5, 1, 2, 3)
Дублирование кортежа
>>> a = (1, 2, 3) >>> a*2 (1, 2, 3, 1, 2, 3)
Нахождение
max() и min()Кортеж должен состоять из однотипных элементов
>>> a = (21, 32, 9, 10, 30) >>> min(a) 9 >>> max(a) 32
Применение функции
sum()>>> a = (21, 32, 9, 10, 30) >>> sum(a)
Проверка вхождения элемента в кортеж
>>> a = (1, 2, 3) >>> 2 in a True >>> 5 in a False >>> 4 not in a True
Обращение по индексу кортежа
>>> a = (1, True, 'hello', 55) >>> a[1] True >>> a[3] 55 >>> a[-2] 'hello'
Срезы индексов кортежа
>>> a = (10, 20, 5, 8, 15, 35) >>> a[1:3] (20, 5) >>> a[2:5] (5, 8, 15)
Кортеж — неизменяемый объект
Элементы кортежа нельзя изменять. При попытке сделать такое изменение выскачит исключение TypeError.
>>> a = (1, True, 'hello', 55) >>> a[3]=100 Traceback (most recent call last): File "", line 1, in a[3]=100 TypeError: 'tuple' object does not support item assignment#53>
Методы кортежа
Метод .index(value[, start[,finish]])
Данный метод принимает обязательный параметр value и возвращает индекс первого элемента слева с таким значением. С помощью необязательных параметров start и finish можно ограничить индексы поиска. В случае если в кортеже нет значения вызывается исключение ValueError.
>>> a = (1, 2, 3, 1, 5) >>> a.index(1) 0 >>> a.index(1,2) 3 >>> a.index(4) Traceback (most recent call last): File "", line 1, in a.index(4) ValueError: tuple.index(x): x not in tuple#59>
Метод .count(value)
Данный метод принимает обязательный параметр value и возвращает количество раз появления значения value в кортеже
>>> a (1, 2, 3, 1, 5) >>> a. count(1) 2 >>> a.count(4) 0
Обход элементов кортежа в цикле for
Обход по значениям элементов
>>> a = (1, True, 'hello', 55) >>> for i in a: print(i) 1 True hello 55
Обход по индексам элементов кортежа
>>> a = (1, True, 'hello', 55) >>> for i in range(len(a)): print(a[i]) 1 True hello 55
Python — Доступ к элементам кортежа
❮ Предыдущий Далее ❯
Доступ к элементам кортежа
Вы можете получить доступ к элементам кортежа, обратившись к порядковому номеру внутри квадрата скобки:
Пример
Вывести второй элемент кортежа:
thistuple = («яблоко», «банан», «вишня»)
print(thistuple[1])
Попробуйте сами »
Примечание : Первый элемент имеет индекс 0.
Отрицательное индексирование
Отрицательное индексирование означает начало с конца.
-1
относится к последнему пункту, -2
относится к предпоследнему элементу и т. д.
Пример
Вывести последний элемент кортежа:
thistuple = («яблоко», «банан», «вишня»)
print(thistuple[-1] )
Попробуйте сами »
Диапазон индексов
Вы можете указать диапазон индексов, указав, с чего начать и куда закончить диапазон.
При указании диапазона возвращаемым значением будет новый кортеж с указанные предметы.
Пример
Вернуть третий, четвертый и пятый элемент:
thistuple = («яблоко», «банан», «вишня», «апельсин», «киви», «дыня», «манго»)
print (thistuple[2:5])
Попробуйте сами »
Примечание: Поиск начнется с индекса 2 (включено) и закончится на индексе 5 (не включено).
Помните, что первый элемент имеет индекс 0.
Если не указывать начальное значение, диапазон начнется с первого элемента:
Пример
В этом примере возвращаются элементы с самого начала, но НЕ включенные в «киви»:
thistuple = («яблоко», «банан», «вишня», «апельсин», «киви», «дыня», «манго «)
print(thistuple[:4])
Попробуйте сами »
При исключении конечного значения диапазон будет продолжаться до конца списка:
Пример
В этом примере возвращаются элементы из » вишневый» и до конца:
thistuple = («яблоко», «банан», «вишня», «апельсин», «киви», «дыня», «манго»)
print(thistuple[2:])
Попробуйте сами »
Диапазон отрицательных индексов
Укажите отрицательные индексы, если хотите начать поиск с конца tuple:
Пример
В этом примере возвращаются элементы из индекса -4 (включено) в индекс -1 (исключено)
thistuple = («яблоко», «банан», «вишня», «апельсин», «киви» , «дыня», «манго»)
print(thistuple[-4:-1])
Попробуйте сами »
Проверить, существует ли элемент
Чтобы определить, присутствует ли указанный элемент в кортеже, используйте ключевое слово в ключевом слове
:
Пример
Проверьте, присутствует ли «яблоко» в кортеже:
thistuple = («яблоко», «банан», « вишня»)
, если «яблоко» в этом кортеже:
print(«Да, «яблоко» во фруктах
tuple»)
Попробуйте сами »
❮ Предыдущая Далее ❯
НОВИНКА
Мы только что запустили
Видео W3Schools
Узнать
ВЫБОР ЦВЕТА
КОД ИГРЫ
Играть в игру
Лучшие учебники
Учебник по HTMLУчебник по CSS
Учебник по JavaScript
Учебник How To
Учебник по SQL
Учебник по Python
Учебник по W3. CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery
900
Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery
Основные примеры
Примеры HTMLПримеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery
FORUM | О
W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.
Copyright 1999-2022 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.
кортежей Python0001
Tuple — это набор объектов Python, очень похожий на список. Последовательность значений, хранящихся в кортеже, может быть любого типа, и они индексируются целыми числами.
Значения кортежа синтаксически разделяются запятыми. Хотя это и не обязательно, чаще кортеж определяют, заключая последовательность значений в круглые скобки. Это помогает легче понять кортежи Python.
Создание кортежа
В Python кортежи создаются путем размещения последовательности значений, разделенных запятой, с использованием или без использования круглых скобок для группировки последовательности данных.
Примечание: Создание кортежа Python без использования круглых скобок известно как упаковка кортежей.
Программа Python для демонстрации добавления элементов в Tuple.
Python3
|
Вывод:
Исходный пустой кортеж: () Кортеж с использованием String: («Вундеркинды», «Для») Кортеж с использованием списка: (1, 2, 4, 5, 6) Кортеж с использованием функции: ("G", "e", "e", "k", "s")
Создание кортежа со смешанными типами данных.
Кортежи могут содержать любое количество элементов и любого типа данных (например, строки, целые числа, список и т. д.). Кортежи также можно создавать с помощью одного элемента, но это немного сложно. Недостаточно иметь один элемент в круглых скобках, должна быть запятая в конце, чтобы сделать его кортежем.
Python3
|
Выход:
. (5, «Добро пожаловать», 7, «Вундеркинды») Кортеж с вложенными кортежами: ((0, 1, 2, 3), ('питон', 'выродок')) Кортеж с повторением: («Вундеркинды», «Вундеркинды», «Вундеркинды») Кортеж с петлей («Вундеркинды»,) (('Вундеркинды',) ((('Вундеркинды',),),) (((('Вундеркинды',),),),) ((((('Вундеркинды',),),),),)Сложности создания кортежей:
Временная сложность: O(1)
Вспомогательное пространство: O(n)
Доступ к кортежам
разнородные элементы, доступ к которым осуществляется посредством распаковки или индексации (или даже по атрибуту в случае именованных кортежей). Списки изменяемы, а их элементы обычно однородны, и доступ к ним осуществляется путем перебора списка.
Примечание: При распаковке кортежа количество переменных в левой части должно быть равно количеству значений в данном кортеже a.
Python3
|
Вывод:
Первый элемент кортежа: грамм Значения после распаковки: Компьютерщики За Компьютерщики
Сложности доступа к элементам в кортежах:
Временная сложность: O(1)
Пространственная сложность: O(1)
Конкатенация кортежей
Конкатенация двух или более кортежей Кортежи. Конкатенация выполняется с помощью оператора «+». Конкатенация кортежей всегда выполняется с конца исходного кортежа. Другие арифметические операции не применяются к кортежам.
Примечание- При конкатенации могут объединяться только одинаковые типы данных, при объединении списка и кортежа возникает ошибка.
Python3
|
Output:
Tuple 1: (0, 1, 2, 3) Кортеж2: («Вундеркинды», «Для», «Вундеркинды») Кортежи после конкатенации: (0, 1, 2, 3, «Гики», «Для», «Гики»)
Временная сложность: O(1)
Вспомогательное пространство: O(1)
Нарезка кортежа
Нарезка кортежа выполняется для извлечения определенного диапазона или фрагмента подэлементов из кортежа. Нарезка также может выполняться для списков и массивов. Индексация в списке приводит к выборке одного элемента, тогда как срез позволяет получить набор элементов.
Примечание. Отрицательные значения приращения также можно использовать для обращения последовательности кортежей.
Python3
|
Вывод:
Удаление первого элемента: («Е», «Е», «К», «С», «Ф», «О», «Р», «Г», «Е», «Е», «К», «С») Кортеж после того, как последовательность элементов перевернута: («С», «К», «Е», «Е», «Г», «Р», «О», «Ф», «С», «К», «Е», «Е», « ГРАММ') Печатные элементы между диапазоном 4-9: ('S', 'F', 'O', 'R', 'G')
Сложности для обхода/поиска элементов в кортежах:
Временная сложность: O(1)
Пространственная сложность: O(1)
Удаление кортежа
Кортежи являются неизменяемыми и, следовательно, они не позволяют удалить его часть. Весь кортеж удаляется с помощью метода del().
Примечание. Печать кортежа после удаления приводит к ошибке.
Питон
|
(самый последний звонок в последний раз):
Файл «/HOME/EF50FD0709343443443443443443443443443434343434343434343434343434. Небольшой».0014 Печать (tuple1)
Имя и название «Tuple1» не определено
Встроенные методы
встроенный встроенный встроенный Находит в кортеже и возвращает индекс заданного значения там, где он доступен | |
---|---|
count() | Возвращает частоту появления указанного значения |
Встроенные функции
Встроенная функция | Описание | |
---|---|---|
ALL () | Возвращает True, если все элементы являются истинными, или если Tuple пуст | . вернуть true, если какой-либо элемент кортежа истинен. если кортеж пуст, вернуть false |
len() | Возвращает длину кортежа или размер кортежа | |
enumerate() | Возвращает перечисляемый объект кортежа | |
max() | return maximum element of given tuple | |
min() | return minimum element of given tuple | |
sum() | Sums up the numbers in the tuple | |
sorted() | вводит элементы в кортеж и возвращает новый отсортированный список | |
tuple() | Преобразует итерируемый объект в кортеж. |
Кортежи VS Списки:
Сходства | Различия |
Функции, которые можно использовать как для списков, так и для кортежей: , all(), sorted() | Методы, которые нельзя использовать для кортежей: append(), insert(), remove(), pop(), clear(), sort(), reverse() |
Методы, которые можно использовать как для списков, так и для кортежей: count(), Index() | мы обычно используем «кортежи» для разнородных (разных) типов данных и «списки» для однородных (похожих) типов данных. Оставить комментарий
|