Usando Tuplas em Python

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, você obterá uma compreensão abrangente das tuplas (tuples) em Python. Você aprenderá a criar tuplas, acessar seus elementos usando indexação e fatiamento (slicing), e explorará sua natureza imutável. Você também praticará o uso de operadores de tuplas, desempacotamento (unpacking) e funções nativas (built-in functions) comuns para trabalhar eficientemente com dados de tuplas.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Criar e Acessar Tuplas

Neste passo, você aprenderá a criar tuplas e a acessar seus elementos. Tuplas são coleções ordenadas e imutáveis de itens, o que significa que seu conteúdo não pode ser alterado após a criação.

Primeiro, localize o explorador de arquivos (file explorer) no lado esquerdo do WebIDE. Encontre e abra o arquivo chamado tuple_basics.py. Escreveremos nosso código neste arquivo.

Vamos começar criando alguns tipos diferentes de tuplas. Adicione o seguinte código a tuple_basics.py:

## Create an empty tuple
empty_tuple = ()
print("Empty tuple:", empty_tuple)
print("Type of empty_tuple:", type(empty_tuple))

## Create a tuple with a single element (note the trailing comma)
single_element_tuple = (50,)
print("\nSingle element tuple:", single_element_tuple)
print("Type of single_element_tuple:", type(single_element_tuple))

## Create a tuple with multiple elements
fruits = ("apple", "banana", "cherry")
print("\nFruits tuple:", fruits)

## Create a tuple from a list using the tuple() constructor
numbers_list = [1, 2, 3, 4]
numbers_tuple = tuple(numbers_list)
print("\nTuple from list:", numbers_tuple)

Após adicionar o código, salve o arquivo (você pode usar o atalho Ctrl+S). Em seguida, abra o terminal na parte inferior do WebIDE e execute o script com o seguinte comando:

python tuple_basics.py

Você deverá ver a seguinte saída, que confirma a criação e os tipos das suas tuplas:

Empty tuple: ()
Type of empty_tuple: <class 'tuple'>

Single element tuple: (50,)
Type of single_element_tuple: <class 'tuple'>

Fruits tuple: ('apple', 'banana', 'cherry')

Tuple from list: (1, 2, 3, 4)

Agora, vamos aprender a acessar os elementos dentro de uma tupla. Você pode usar a indexação (começando em 0) para obter um único elemento e o fatiamento (slicing) para obter uma sub-sequência de elementos.

Adicione o seguinte código ao final do seu arquivo tuple_basics.py:

## Define a sample tuple for accessing elements
my_tuple = ('p', 'y', 't', 'h', 'o', 'n')
print("\nOriginal tuple:", my_tuple)

## Access elements using indexing
print("First element (index 0):", my_tuple[0])
print("Last element (index -1):", my_tuple[-1])

## Access elements using slicing
print("Elements from index 1 to 3:", my_tuple[1:4])
print("Elements from index 2 to the end:", my_tuple[2:])
print("Reverse the tuple:", my_tuple[::-1])

Salve o arquivo novamente e execute o script a partir do terminal:

python tuple_basics.py

A saída completa incluirá agora os resultados do acesso aos elementos da tupla:

Empty tuple: ()
Type of empty_tuple: <class 'tuple'>

Single element tuple: (50,)
Type of single_element_tuple: <class 'tuple'>

Fruits tuple: ('apple', 'banana', 'cherry')

Tuple from list: (1, 2, 3, 4)

Original tuple: ('p', 'y', 't', 'h', 'o', 'n')
First element (index 0): p
Last element (index -1): n
Elements from index 1 to 3: ('y', 't', 'h')
Elements from index 2 to the end: ('t', 'h', 'o', 'n')
Reverse the tuple: ('n', 'o', 'h', 't', 'y', 'p')

Você agora criou com sucesso tuplas e acessou seus elementos.

Compreender a Imutabilidade da Tupla

Uma característica chave das tuplas é a sua imutabilidade. Isso significa que, uma vez que uma tupla é criada, você não pode alterar, adicionar ou remover seus elementos. Neste passo, você verá o que acontece quando tenta modificar uma tupla e aprenderá a maneira correta de realizar uma "modificação" criando uma nova tupla.

Abra o arquivo tuple_modification.py no explorador de arquivos.

Primeiro, vamos tentar alterar um elemento em uma tupla diretamente. Adicione o seguinte código a tuple_modification.py. A linha que tenta a modificação está comentada.

my_tuple = ('a', 'b', 'c', 'd', 'e')
print("Original tuple:", my_tuple)

## The following line will cause a TypeError because tuples are immutable.
## You can uncomment it to see the error for yourself.
## my_tuple[0] = 'f'

Se você executasse o código com a penúltima linha descomentada, o Python pararia e exibiria um TypeError: 'tuple' object does not support item assignment.

Como não podemos modificar uma tupla no local (in place), a solução é criar uma nova tupla com as alterações desejadas. Podemos fazer isso usando fatiamento (slicing) e concatenação (+).

Adicione o seguinte código ao final de tuple_modification.py para ver como "substituir" um elemento:

## "Modify" a tuple by creating a new one
## Concatenate a new single-element tuple ('f',) with a slice of the original tuple
modified_tuple = ('f',) + my_tuple[1:]

print("New 'modified' tuple:", modified_tuple)
print("Original tuple is unchanged:", my_tuple)

Da mesma forma, você pode "excluir" um elemento criando uma nova tupla que o exclua. Adicione este código ao seu arquivo:

## "Delete" an element by creating a new tuple
## Concatenate the slice before the element with the slice after the element
tuple_after_deletion = my_tuple[:2] + my_tuple[3:] ## Excludes element at index 2 ('c')

print("\nNew tuple after 'deletion':", tuple_after_deletion)

Salve o arquivo e execute-o a partir do terminal:

python tuple_modification.py

A saída demonstrará que criamos novas tuplas enquanto a original permanece intacta:

Original tuple: ('a', 'b', 'c', 'd', 'e')
New 'modified' tuple: ('f', 'b', 'c', 'd', 'e')
Original tuple is unchanged: ('a', 'b', 'c', 'd', 'e')

New tuple after 'deletion': ('a', 'b', 'd', 'e')

Este passo destaca a natureza imutável das tuplas e a prática padrão para contornar essa limitação.

Usar Operadores de Tupla e Desempacotamento (Unpacking)

Python fornece vários operadores úteis para trabalhar com tuplas. Você também aprenderá sobre o desempacotamento de tuplas (tuple unpacking), um recurso poderoso para atribuir elementos de uma tupla a variáveis.

Abra o arquivo tuple_operators.py no explorador de arquivos.

Vamos explorar os operadores de concatenação (+), repetição (*) e pertinência (in). Adicione o seguinte código a tuple_operators.py:

tuple1 = (1, 2, 3)
tuple2 = ('a', 'b', 'c')

## Concatenation (+)
concatenated_tuple = tuple1 + tuple2
print("Concatenated:", concatenated_tuple)

## Repetition (*)
repeated_tuple = tuple1 * 3
print("Repeated:", repeated_tuple)

## Membership (in)
is_present = 'b' in tuple2
print("\nIs 'b' in tuple2?", is_present)

is_absent = 5 in tuple1
print("Is 5 in tuple1?", is_absent)

Salve o arquivo e execute-o a partir do terminal:

python tuple_operators.py

Você verá os resultados dessas operações:

Concatenated: (1, 2, 3, 'a', 'b', 'c')
Repeated: (1, 2, 3, 1, 2, 3, 1, 2, 3)

Is 'b' in tuple2? True
Is 5 in tuple1? False

Em seguida, vamos explorar o desempacotamento de tuplas (tuple unpacking). Isso permite que você atribua os elementos de uma tupla a múltiplas variáveis em uma única linha legível. O número de variáveis deve corresponder ao número de elementos na tupla.

Adicione o seguinte código ao final de tuple_operators.py:

## Tuple unpacking
person_info = ("Alice", 30, "Engineer")
name, age, profession = person_info

print("\nOriginal info tuple:", person_info)
print("Unpacked Name:", name)
print("Unpacked Age:", age)
print("Unpacked Profession:", profession)

Salve o arquivo novamente e execute o script:

python tuple_operators.py

A saída agora incluirá as variáveis desempacotadas:

Concatenated: (1, 2, 3, 'a', 'b', 'c')
Repeated: (1, 2, 3, 1, 2, 3, 1, 2, 3)

Is 'b' in tuple2? True
Is 5 in tuple1? False

Original info tuple: ('Alice', 30, 'Engineer')
Unpacked Name: Alice
Unpacked Age: 30
Unpacked Profession: Engineer

O desempacotamento de tuplas é especialmente útil para funções que retornam múltiplos valores, pois frequentemente os retornam em uma tupla.

Aplicar Funções e Métodos Integrados (Built-in)

Neste passo final, você aprenderá a usar funções e métodos integrados comuns que operam em tuplas. As tuplas possuem dois métodos principais, count() e index(), e podem ser usadas com muitas funções de propósito geral.

Abra o arquivo tuple_functions.py no explorador de arquivos.

Vamos começar com os métodos da tupla. count() retorna o número de vezes que um elemento aparece, e index() retorna o índice da primeira ocorrência de um elemento.

Adicione o seguinte código a tuple_functions.py:

my_tuple = (1, 5, 2, 8, 5, 3, 5, 9)
print("Tuple:", my_tuple)

## count() method
count_of_5 = my_tuple.count(5)
print("Count of 5:", count_of_5)

## index() method
index_of_8 = my_tuple.index(8)
print("Index of 8:", index_of_8)

Agora, vamos usar algumas funções integradas que são muito úteis com tuplas, como len(), max(), min(), sum() e sorted().

Adicione o seguinte código ao final de tuple_functions.py:

number_tuple = (10, 5, 20, 15, 30, 5)
print("\nNumber tuple:", number_tuple)

## len() function
print("Length:", len(number_tuple))

## max() and min() functions
print("Maximum value:", max(number_tuple))
print("Minimum value:", min(number_tuple))

## sum() function (for numeric tuples)
print("Sum of elements:", sum(number_tuple))

## sorted() function (returns a new sorted list)
sorted_list = sorted(number_tuple)
print("Sorted list from tuple:", sorted_list)

Note que a função sorted() retorna uma nova lista, e não uma tupla. Se você precisar de uma tupla ordenada, pode converter o resultado de volta usando tuple(sorted_list).

Salve o arquivo e execute-o a partir do terminal:

python tuple_functions.py

Sua saída deve ser parecida com esta:

Tuple: (1, 5, 2, 8, 5, 3, 5, 9)
Count of 5: 3
Index of 8: 3

Number tuple: (10, 5, 20, 15, 30, 5)
Length: 6
Maximum value: 30
Minimum value: 5
Sum of elements: 85
Sorted list from tuple: [5, 5, 10, 15, 20, 30]

Você aprendeu agora a usar métodos e funções importantes para inspecionar e analisar tuplas.

Resumo

Neste laboratório, você adquiriu uma base sólida no uso de tuplas em Python. Você aprendeu a criar tuplas de várias maneiras e como acessar seus elementos usando indexação e fatiamento (slicing). Você explorou o conceito central da imutabilidade das tuplas e praticou a criação de novas tuplas para realizar "modificações". Você também se familiarizou com operadores comuns de tuplas como + e *, a conveniência do desempacotamento de tuplas (tuple unpacking) e a utilidade de métodos integrados (count(), index()) e funções (len(), max(), sorted()) para trabalhar com dados de tuplas.