В этой статье вы узнаете все о кортежах 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, 'Привет', 3.4) ('мышь', (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, 'собака') 3 4.6 собака
Создание кортежа с одним элементом немного сложно.
Одного элемента в скобках недостаточно. Нам понадобится конечная запятая, чтобы указать, что это на самом деле кортеж.
my_tuple = ("hello") print(type(my_tuple)) # # Creating a tuple having one element my_tuple = ("hello",) print(type(my_tuple)) # # Parentheses is optional my_tuple = "hello", print(type(my_tuple)) #
Вывод
Доступ к элементам кортежа
Есть различные способы доступа к элементам кортежа.
1. Индексирование
Мы можем использовать оператор индекса ()
для доступа к элементу в кортеже, где индекс начинается с 0.
Итак, кортеж, состоящий из 6 элементов, будет иметь индексы от 0 до 5. Попытка получить доступ к индексу за пределами диапазона индексов кортежа (6,7,… в этом примере) вызовет IndexError
.
Индекс должен быть целым числом, поэтому мы не можем использовать float или другие типы. Это приведет к 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
Вывод
пц 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))
Вывод
tp
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 ',' а ',' м ',' я ',' я ')
Нарезку лучше всего визуализировать, считая, что индекс находится между элементами, как показано ниже. Итак, если мы хотим получить доступ к диапазону, нам нужен индекс, который будет вырезать часть из кортежа.
![](https://cdn.wiki-base.com/8606704/python_tuple_with_examples.jpg.webp)
Изменение кортежа
В отличие от списков, кортежи неизменяемы.
Это означает, что элементы кортежа не могут быть изменены после того, как они были назначены. Но если элемент сам является изменяемым типом данных, например списком, его вложенные элементы могут быть изменены.
Мы также можем присвоить кортежу разные значения (переназначение).
# 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')
We can use +
operator to combine two tuples. This is called concatenation.
We can also repeat the elements in a tuple for a given number of times using the *
operator.
Both +
and *
operations result in a new tuple.
# Concatenation # Output: (1, 2, 3, 4, 5, 6) print((1, 2, 3) + (4, 5, 6)) # Repeat # Output: ('Repeat', 'Repeat', 'Repeat') print(("Repeat",) * 3)
Output
(1, 2, 3, 4, 5, 6) ('Repeat', 'Repeat', 'Repeat')
Deleting a Tuple
As discussed above, we cannot change the elements in a tuple. It means that we cannot delete or remove items from a tuple.
Deleting a tuple entirely, however, is possible using the keyword 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)
Output
Traceback (most recent call last): File "", line 12, in NameError: name 'my_tuple' is not defined
Tuple Methods
Methods that add items or remove items are not available with tuple. Only the following two methods are available.
Some examples of Python tuple methods:
my_tuple = ('a', 'p', 'p', 'l', 'e',) print(my_tuple.count('p')) # Output: 2 print(my_tuple.index('l')) # Output: 3
Output
2 3
Other Tuple Operations
1. Tuple Membership Test
We can test if an item exists in a tuple or not, using the keyword 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)
Output
True False True
2. Iterating Through a Tuple
We can use a for
loop to iterate through each item in a tuple.
# Using a for loop to iterate through a tuple for name in ('John', 'Kate'): print("Hello", name)
Output
Hello John Hello Kate
Advantages of Tuple over List
Since tuples are quite similar to lists, both of them are used in similar situations. However, there are certain advantages of implementing a tuple over a list. Below listed are some of the main advantages:
- Обычно мы используем кортежи для разнородных (разных) типов данных и списки для однородных (похожих) типов данных.
- Поскольку кортежи неизменяемы, перебор кортежа выполняется быстрее, чем со списком. Так что есть небольшой прирост производительности.
- Кортежи, содержащие неизменяемые элементы, можно использовать в качестве ключа для словаря. Со списками это невозможно.
- Если у вас есть данные, которые не меняются, их реализация в виде кортежа гарантирует, что они останутся защищенными от записи.