Кортеж Python
Кортеж Python
В этой статье вы узнаете все о кортежах Python. В частности, что такое кортежи, как их создавать, когда их использовать и различные методы, с которыми вы должны быть знакомы.
Видео:списки и кортежи Python
Кортеж в Python похож на список. Разница между ними заключается в том, что мы не можем изменить элементы кортежа после его назначения, в то время как мы можем изменить элементы списка.
<час>Создание кортежа
Кортеж создается путем помещения всех элементов (элементов) в круглые скобки ()
. , разделенных запятыми. Круглые скобки необязательны, однако рекомендуется их использовать.
Кортеж может иметь любое количество элементов, и они могут быть разных типов (целое число, число с плавающей запятой, список, строка и т. д.).
# Different types of tuples
# Empty tuple
my_tuple = ()
print(my_tuple)
# Tuple having integers
my_tuple = (1, 2, 3)
print(my_tuple)
# tuple with mixed datatypes
my_tuple = (1, "Hello", 3.4)
print(my_tuple)
# nested tuple
my_tuple = ("mouse", [8, 4, 6], (1, 2, 3))
print(my_tuple)
Вывод
() (1, 2, 3) (1, 'Hello', 3.4) ('mouse', [8, 4, 6], (1, 2, 3))
Кортеж также можно создать без использования круглых скобок. Это называется упаковкой кортежей.
my_tuple = 3, 4.6, "dog"
print(my_tuple)
# tuple unpacking is also possible
a, b, c = my_tuple
print(a) # 3
print(b) # 4.6
print(c) # dog
Вывод
(3, 4.6, 'dog') 3 4.6 dog
Создать кортеж с одним элементом немного сложно.
Наличие одного элемента в круглых скобках недостаточно. Нам понадобится запятая в конце, чтобы указать, что это кортеж.
my_tuple = ("hello")
print(type(my_tuple)) # <class 'str'>
# Creating a tuple having one element
my_tuple = ("hello",)
print(type(my_tuple)) # <class 'tuple'>
# Parentheses is optional
my_tuple = "hello",
print(type(my_tuple)) # <class 'tuple'>
Вывод
<class 'str'> <class 'tuple'> <class 'tuple'><час>
Доступ к элементам кортежа
Существуют различные способы доступа к элементам кортежа.
1. Индексирование
Мы можем использовать оператор индекса []
для доступа к элементу в кортеже, где индекс начинается с 0.
Таким образом, кортеж из 6 элементов будет иметь индексы от 0 до 5. Попытка доступа к индексу за пределами диапазона индексов кортежа (6,7,... в этом примере) вызовет IndexError
.
Индекс должен быть целым числом, поэтому мы не можем использовать число с плавающей запятой или другие типы. Это приведет к TypeError
.
Аналогичным образом доступ к вложенным кортежам осуществляется с помощью вложенной индексации, как показано в примере ниже.
# Accessing tuple elements using indexing
my_tuple = ('p','e','r','m','i','t')
print(my_tuple[0]) # 'p'
print(my_tuple[5]) # 't'
# IndexError: list index out of range
# print(my_tuple[6])
# Index must be an integer
# TypeError: list indices must be integers, not float
# my_tuple[2.0]
# nested tuple
n_tuple = ("mouse", [8, 4, 6], (1, 2, 3))
# nested index
print(n_tuple[0][3]) # 's'
print(n_tuple[1][1]) # 4
Вывод
p t s 4<час>
2. Отрицательное индексирование
Python допускает отрицательное индексирование своих последовательностей.
Индекс -1 относится к последнему элементу, -2 к предпоследнему элементу и т. д.
# Negative indexing for accessing tuple elements
my_tuple = ('p', 'e', 'r', 'm', 'i', 't')
# Output: 't'
print(my_tuple[-1])
# Output: 'p'
print(my_tuple[-6])
Вывод
t p<час>
3. Нарезка
Мы можем получить доступ к ряду элементов в кортеже, используя двоеточие оператора среза :
.
# Accessing tuple elements using slicing
my_tuple = ('p','r','o','g','r','a','m','i','z')
# elements 2nd to 4th
# Output: ('r', 'o', 'g')
print(my_tuple[1:4])
# elements beginning to 2nd
# Output: ('p', 'r')
print(my_tuple[:-7])
# elements 8th to end
# Output: ('i', 'z')
print(my_tuple[7:])
# elements beginning to end
# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple[:])
Вывод
('r', 'o', 'g') ('p', 'r') ('i', 'z') ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
Нарезку можно лучше всего визуализировать, рассматривая индекс как находящийся между элементами, как показано ниже. Поэтому, если мы хотим получить доступ к диапазону, нам нужен индекс, который будет нарезать часть кортежа.
<рисунок> <час>Изменение кортежа
В отличие от списков, кортежи неизменяемы.
Это означает, что элементы кортежа не могут быть изменены после того, как они были назначены. Но если элемент сам является изменяемым типом данных, таким как список, его вложенные элементы можно изменить.
Мы также можем присвоить кортежу разные значения (переназначение).
# Changing tuple values
my_tuple = (4, 2, 3, [6, 5])
# TypeError: 'tuple' object does not support item assignment
# my_tuple[1] = 9
# However, item of mutable element can be changed
my_tuple[3][0] = 9 # Output: (4, 2, 3, [9, 5])
print(my_tuple)
# Tuples can be reassigned
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple)
Вывод
(4, 2, 3, [9, 5]) ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
Мы можем использовать +
оператор для объединения двух кортежей. Это называется объединением. .
Мы также можем повторить элементы в кортеже заданное количество раз с помощью *
оператор.
Оба +
и *
операции приводят к созданию нового кортежа.
# Concatenation
# Output: (1, 2, 3, 4, 5, 6)
print((1, 2, 3) + (4, 5, 6))
# Repeat
# Output: ('Repeat', 'Repeat', 'Repeat')
print(("Repeat",) * 3)
Вывод
(1, 2, 3, 4, 5, 6) ('Repeat', 'Repeat', 'Repeat')<час>
Удаление кортежа
Как обсуждалось выше, мы не можем изменять элементы в кортеже. Это означает, что мы не можем удалять или удалять элементы из кортежа.
Однако полное удаление кортежа возможно с помощью ключевого слова del.
# Deleting tuples
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
# can't delete items
# TypeError: 'tuple' object doesn't support item deletion
# del my_tuple[3]
# Can delete an entire tuple
del my_tuple
# NameError: name 'my_tuple' is not defined
print(my_tuple)
Вывод
Traceback (most recent call last): File "<string>", line 12, in <module> NameError: name 'my_tuple' is not defined<час>
Методы кортежей
Методы, добавляющие или удаляющие элементы, недоступны для кортежа. Доступны только следующие два метода.
Некоторые примеры методов кортежей Python:
my_tuple = ('a', 'p', 'p', 'l', 'e',)
print(my_tuple.count('p')) # Output: 2
print(my_tuple.index('l')) # Output: 3
Вывод
2 3<час>
Другие операции с кортежами
1. Тест на членство в кортеже
Мы можем проверить, существует ли элемент в кортеже или нет, используя ключевое слово in
.
# Membership test in tuple
my_tuple = ('a', 'p', 'p', 'l', 'e',)
# In operation
print('a' in my_tuple)
print('b' in my_tuple)
# Not in operation
print('g' not in my_tuple)
Вывод
True False True<час>
2. Итерация по кортежу
Мы можем использовать for
цикл для перебора каждого элемента в кортеже.
# Using a for loop to iterate through a tuple
for name in ('John', 'Kate'):
print("Hello", name)
Вывод
Hello John Hello Kate<час>
Преимущества кортежа перед списком
Поскольку кортежи очень похожи на списки, они оба используются в схожих ситуациях. Однако у реализации кортежа есть определенные преимущества перед списком. Ниже перечислены некоторые из основных преимуществ:
- Обычно мы используем кортежи для разнородных (разных) типов данных и списки для однородных (похожих) типов данных.
- Поскольку кортежи неизменяемы, итерация по кортежу выполняется быстрее, чем по списку. Таким образом, есть небольшой прирост производительности.
- Кортежи, содержащие неизменяемые элементы, можно использовать в качестве ключа для словаря. Со списками это невозможно.
- Если у вас есть данные, которые не изменяются, реализация их в виде кортежа гарантирует, что они останутся защищенными от записи.
Python