Python Tuple (com exemplos)

Neste artigo, você aprenderá tudo sobre tuplas Python. Mais especificamente, o que são tuplas, como criá-las, quando usá-las e vários métodos com os quais você deve estar familiarizado.

Vídeo: listas e tuplas de Python

Uma tupla em Python é semelhante a uma lista. A diferença entre os dois é que não podemos alterar os elementos de uma tupla depois de atribuída, ao passo que podemos alterar os elementos de uma lista.

Criação de uma tupla

Uma tupla é criada colocando todos os itens (elementos) entre parênteses (), separados por vírgulas. Os parênteses são opcionais, no entanto, é uma boa prática usá-los.

Uma tupla pode ter qualquer número de itens e eles podem ser de tipos diferentes (inteiro, flutuante, lista, string, etc.).

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

Resultado

 () (1, 2, 3) (1, 'Olá', 3.4) ('mouse', (8, 4, 6), (1, 2, 3))

Uma tupla também pode ser criada sem o uso de parênteses. Isso é conhecido como empacotamento de tupla.

 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

Resultado

 (3, 4.6, 'cachorro') 3 4.6 cachorro

Criar uma tupla com um elemento é um pouco complicado.

Ter um elemento entre parênteses não é suficiente. Precisaremos de uma vírgula final para indicar que é, de fato, uma tupla.

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

Resultado

 

Acessar elementos de tupla

Existem várias maneiras de acessar os elementos de uma tupla.

1. Indexação

Podemos usar o operador de índice ()para acessar um item em uma tupla, onde o índice começa em 0.

Portanto, uma tupla com 6 elementos terá índices de 0 a 5. Tentar acessar um índice fora da faixa de índice da tupla (6,7, … neste exemplo) gerará um IndexError.

O índice deve ser um inteiro, portanto, não podemos usar float ou outros tipos. Isso resultará em TypeError.

Da mesma forma, tuplas aninhadas são acessadas usando indexação aninhada, conforme mostrado no exemplo abaixo.

 # 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

Resultado

 pts 4

2. Indexação Negativa

Python permite indexação negativa para suas sequências.

O índice -1 se refere ao último item, -2 ao penúltimo item e assim por diante.

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

Resultado

 tp

3. Fatias

Podemos acessar uma variedade de itens em uma tupla usando o operador de fatiamento, dois pontos :.

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

Resultado

 ('r', 'o', 'g') ('p', 'r') ('i', 'z') ('p', 'r', 'o', 'g', 'r ',' a ',' m ',' i ',' z ')

O corte pode ser melhor visualizado considerando o índice entre os elementos, conforme mostrado abaixo. Portanto, se quisermos acessar um intervalo, precisamos do índice que cortará a parte da tupla.

Fatiamento de elemento em Python

Mudando uma Tupla

Ao contrário das listas, as tuplas são imutáveis.

Isso significa que os elementos de uma tupla não podem ser alterados depois de atribuídos. Mas, se o próprio elemento for um tipo de dados mutável, como lista, seus itens aninhados podem ser alterados.

Também podemos atribuir uma tupla a diferentes valores (redesignação).

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

Resultado

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

  • Geralmente usamos tuplas para tipos de dados heterogêneos (diferentes) e listas para tipos de dados homogêneos (semelhantes).
  • Como as tuplas são imutáveis, iterar por meio de uma tupla é mais rápido do que com lista. Portanto, há um ligeiro aumento de desempenho.
  • Tuplas que contêm elementos imutáveis ​​podem ser usadas como uma chave para um dicionário. Com listas, isso não é possível.
  • Se você tiver dados que não mudam, implementá-los como tupla garantirá que eles permaneçam protegidos contra gravação.

Artigos interessantes...