Кортеж 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, 'Привет', 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 ',' а ',' м ',' я ',' я ')

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

Нарезка элементов в Python

Изменение кортежа

В отличие от списков, кортежи неизменяемы.

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

Мы также можем присвоить кортежу разные значения (переназначение).

 # 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:

  • Обычно мы используем кортежи для разнородных (разных) типов данных и списки для однородных (похожих) типов данных.
  • Поскольку кортежи неизменяемы, перебор кортежа выполняется быстрее, чем со списком. Так что есть небольшой прирост производительности.
  • Кортежи, содержащие неизменяемые элементы, можно использовать в качестве ключа для словаря. Со списками это невозможно.
  • Если у вас есть данные, которые не меняются, их реализация в виде кортежа гарантирует, что они останутся защищенными от записи.

Интересные статьи...