Listas e Tuplas em Python

PythonBeginner
Pratique Agora

Introdução

Bem-vindo a este laboratório prático sobre Listas e Tuplas em Python. Listas são uma das estruturas de dados mais fundamentais e versáteis em Python, permitindo armazenar coleções ordenadas de itens. Tuplas são semelhantes, mas com uma diferença chave: elas são imutáveis.

Ao longo deste laboratório, você aprenderá a criar listas, acessar e manipular seus elementos, e realizar operações comuns como ordenação (sorting) e iteração (looping). Você também explorará tuplas e entenderá quando usá-las em vez de listas.

Este ambiente de laboratório é um WebIDE pré-configurado. Todos os arquivos necessários para este laboratório foram criados para você no diretório /home/labex/project. Vamos começar.

Acessando Elementos da Lista

Nesta etapa, você aprenderá como recuperar elementos de uma lista usando índices e como extrair sublistas usando slicing (fatiamento). Listas são coleções ordenadas de itens contidas entre colchetes [].

Primeiro, abra o arquivo step1_access.py no explorador de arquivos à esquerda. Escreveremos nosso código neste arquivo.

Nota: Se você não está familiarizado com o uso do WebIDE (semelhante ao VS Code), aprenda primeiro neste laboratório.

Obtendo Valores com Índices

Os elementos da lista são acessados usando um índice baseado em zero, o que significa que o primeiro elemento está no índice 0.

Adicione o seguinte código a step1_access.py para criar uma lista e acessar seu primeiro elemento:

## step1_access.py

furniture = ['table', 'chair', 'rack', 'shelf']

## Acessa o primeiro elemento (índice 0)
print(furniture[0])

Para executar o script, abra um terminal no WebIDE e execute o seguinte comando:

python3 /home/labex/project/step1_access.py

Você deverá ver o primeiro elemento da lista impresso no console.

Saída:

table

Índices Negativos

Você também pode usar índices negativos para acessar elementos a partir do final da lista. O índice -1 refere-se ao último elemento, -2 ao penúltimo, e assim por diante.

Modifique step1_access.py para acessar o último elemento:

## step1_access.py

furniture = ['table', 'chair', 'rack', 'shelf']

## Acessa o último elemento (índice -1)
print(furniture[-1])

Execute o script novamente:

python3 /home/labex/project/step1_access.py

Saída:

shelf

Obtendo Sublistas com Slices (Fatiamento)

O slicing (fatiamento) permite que você obtenha uma sublista usando a sintaxe [start:end]. O índice start (início) é inclusivo, e o índice end (fim) é exclusivo.

Vamos praticar isso. Para sua tarefa de verificação, modifique step1_access.py para criar uma lista e imprimir uma fatia dela. Substitua o conteúdo existente pelo código a seguir:

## step1_access.py

furniture = ['table', 'chair', 'rack', 'shelf']

## Obtém uma sublista do índice 1 até (mas não incluindo) o índice 3
sublist = furniture[1:3]
print(sublist)

Execute o script para ver o resultado:

python3 /home/labex/project/step1_access.py

Saída:

['chair', 'rack']

Você também pode criar uma cópia de uma lista usando um slice completo [:]. Quaisquer modificações na lista original não afetarão a cópia.

## step1_access.py

spam = ['cat', 'bat', 'rat', 'elephant']
spam2 = spam[:]  ## Cria uma cópia superficial (shallow copy)
spam.append('dog')

print(spam)
print(spam2)

Execute o script:

python3 /home/labex/project/step1_access.py

Saída:

['cat', 'bat', 'rat', 'elephant', 'dog']
['cat', 'bat', 'rat', 'elephant']

Depois de imprimir com sucesso a fatia ['chair', 'rack'], clique no botão Verify (Verificar) para prosseguir para a próxima etapa.

Modificando e Manipulando Listas

Nesta etapa, você explorará como gerenciar e modificar o conteúdo da lista. Isso inclui alterar valores, combinar listas e adicionar novos elementos.

Abra o arquivo step2_modify.py para começar.

Obtendo o Comprimento da Lista com len()

A função len() retorna o número de itens em uma lista.

Adicione este código a step2_modify.py:

## step2_modify.py

furniture = ['table', 'chair', 'rack', 'shelf']
print(len(furniture))

Execute o script:

python3 /home/labex/project/step2_modify.py

Saída:

4

Alterando Valores com Índices

Você pode alterar um elemento em uma lista atribuindo um novo valor ao seu índice.

## step2_modify.py

furniture = ['table', 'chair', 'rack', 'shelf']
furniture[0] = 'desk'  ## Altera o primeiro elemento
print(furniture)

Execute o script:

python3 /home/labex/project/step2_modify.py

Saída:

['desk', 'chair', 'rack', 'shelf']

Concatenação e Replicação

Você pode combinar duas listas usando o operador + (concatenação) ou repetir o conteúdo de uma lista usando o operador * (replicação).

## step2_modify.py

list1 = [1, 2, 3]
list2 = ['A', 'B', 'C']
combined_list = list1 + list2
print(combined_list)

replicated_list = ['X'] * 3
print(replicated_list)

Execute o script:

python3 /home/labex/project/step2_modify.py

Saída:

[1, 2, 3, 'A', 'B', 'C']
['X', 'X', 'X']

Adicionando Valores com append() e insert()

  • O método append() adiciona um item ao final da lista.
  • O método insert() adiciona um item em um índice especificado.

Para sua tarefa de verificação, vamos combinar essas operações. Substitua o conteúdo de step2_modify.py pelo código a seguir. Este script criará uma lista, adicionará um elemento ao final e inserirá outro no início.

## step2_modify.py

furniture = ['table', 'chair', 'rack', 'shelf']

## Adiciona 'bed' ao final da lista
furniture.append('bed')

## Insere 'desk' no início da lista (índice 0)
furniture.insert(0, 'desk')

print(furniture)

Execute o script para ver a lista final modificada:

python3 /home/labex/project/step2_modify.py

Saída:

['desk', 'table', 'chair', 'rack', 'shelf', 'bed']

Assim que seu script produzir a saída correta, clique em Verify.

Removendo Valores e Ordenando

Nesta etapa, você aprenderá diferentes maneiras de remover itens de uma lista e como ordenar o conteúdo de uma lista.

Por favor, abra o arquivo step3_remove.py.

Removendo Valores

Python fornece várias maneiras de remover itens de uma lista:

  • Instrução del: Remove um item em um índice específico.
  • Método remove(): Remove a primeira ocorrência de um valor específico.
  • Método pop(): Remove e retorna um item em um índice específico (ou o último item se nenhum índice for fornecido).

Vamos vê-los em ação. Adicione isto a step3_remove.py:

## step3_remove.py

furniture = ['table', 'chair', 'rack', 'shelf']
del furniture[2]  ## Remove 'rack'
print(furniture)

furniture.remove('chair') ## Remove 'chair'
print(furniture)

Execute o script:

python3 /home/labex/project/step3_remove.py

Saída:

['table', 'chair', 'shelf']
['table', 'shelf']

Ordenando Valores com sort()

O método sort() ordena a lista no local (in place). Por padrão, ele ordena em ordem crescente.

## step3_remove.py

numbers = [2, 5, 3.14, 1, -7]
numbers.sort()
print(numbers)

letters = ['a', 'z', 'A', 'Z']
letters.sort(key=str.lower) ## Ordenação insensível a maiúsculas/minúsculas
print(letters)

Execute o script:

python3 /home/labex/project/step3_remove.py

Saída:

[-7, 1, 2, 3.14, 5]
['a', 'A', 'z', 'Z']

Para sua tarefa de verificação, você precisa criar uma lista, remover um item específico e, em seguida, ordenar os itens restantes. Substitua o conteúdo de step3_remove.py pelo seguinte:

## step3_remove.py

furniture = ['table', 'chair', 'rack', 'shelf']

## Remove o item 'rack'
furniture.remove('rack')

## Ordena a lista alfabeticamente
furniture.sort()

print(furniture)

Execute o script para ver o resultado:

python3 /home/labex/project/step3_remove.py

Saída:

['chair', 'shelf', 'table']

Depois que seu script remover e ordenar a lista corretamente, clique em Verify.

Iteração (Looping) e Técnicas Avançadas

Nesta etapa, você dominará como iterar sobre listas e usará algumas técnicas de lista avançadas, mas muito úteis.

Abra o arquivo step4_loop.py para esta seção.

Iteração com for

Um loop for é a maneira padrão de iterar sobre os itens em uma lista.

## step4_loop.py

furniture = ['table', 'chair', 'rack', 'shelf']

for item in furniture:
    print(item)

Execute o script:

python3 /home/labex/project/step4_loop.py

Saída:

table
chair
rack
shelf

Obtendo Índice e Valor com enumerate()

Se você precisar tanto do índice quanto do valor durante a iteração, use a função enumerate().

## step4_loop.py

furniture = ['table', 'chair', 'rack', 'shelf']

for index, item in enumerate(furniture):
    print(f'index: {index} - item: {item}')

Execute o script:

python3 /home/labex/project/step4_loop.py

Saída:

index: 0 - item: table
index: 1 - item: chair
index: 2 - item: rack
index: 3 - item: shelf

Os Operadores in e not in

Estes operadores permitem verificar se um valor existe dentro de uma lista.

## step4_loop.py

furniture = ['table', 'chair', 'rack', 'shelf']
print('rack' in furniture)
print('bed' not in furniture)

Execute o script:

python3 /home/labex/project/step4_loop.py

Saída:

True
True

Iterando em Múltiplas Listas com zip()

A função zip() é perfeita para processar múltiplas listas em paralelo. Ela emparelha elementos de cada lista.

Para sua tarefa de verificação, você usará zip() para combinar duas listas. Substitua o conteúdo de step4_loop.py pelo código a seguir. Ele iterará sobre os itens de mobiliário e seus preços correspondentes, imprimindo uma string formatada para cada par.

## step4_loop.py

furniture = ['table', 'chair', 'rack', 'shelf']
price = [100, 50, 80, 40]

for item, amount in zip(furniture, price):
    print(f'The {item} costs ${amount}')

Execute o script para ver a saída combinada:

python3 /home/labex/project/step4_loop.py

Saída:

The table costs $100
The chair costs $50
The rack costs $80
The shelf costs $40

Assim que seu script estiver funcionando corretamente, clique em Verify.

Compreendendo Tuplas (Tuples)

Nesta etapa final, você aprenderá sobre o tipo de dado tupla (tuple). Tuplas são semelhantes a listas, mas são imutáveis, o que significa que seu conteúdo não pode ser alterado após a criação.

Abra o arquivo step5_tuple.py.

O Tipo de Dado Tupla

Tuplas são definidas com parênteses () em vez de colchetes. Como são imutáveis, você não pode alterar, adicionar ou remover elementos depois que a tupla é criada. Isso as torna mais eficientes em termos de memória e úteis para dados que não devem ser modificados.

Você pode acessar elementos de tuplas usando índices e fatiamento (slicing), assim como com listas.

## step5_tuple.py

furniture = ('table', 'chair', 'rack', 'shelf')

## Acessando elementos
print(furniture[0])

## Fatiamento (Slicing)
print(furniture[1:3])

## Obtendo o comprimento
print(len(furniture))

Execute o script:

python3 /home/labex/project/step5_tuple.py

Saída:

table
('chair', 'rack')
4

Se você tentar modificar uma tupla, Python levantará um TypeError. Por exemplo, furniture[0] = 'desk' causaria um erro.

Convertendo entre list() e tuple()

Você pode facilmente converter entre listas e tuplas usando as funções construtoras list() e tuple().

Para sua tarefa de verificação, você converterá uma lista em uma tupla. Substitua o conteúdo de step5_tuple.py pelo seguinte código:

## step5_tuple.py

## Uma lista de itens
my_list = ['cat', 'dog', 5]

## Converte a lista para uma tupla
my_tuple = tuple(my_list)

print(my_tuple)

Execute o script para ver a tupla resultante:

python3 /home/labex/project/step5_tuple.py

Saída:

('cat', 'dog', 5)

Você também pode converter uma tupla de volta para uma lista se precisar modificá-la:

## step5_tuple.py

my_tuple = ('cat', 'dog', 5)
my_list = list(my_tuple)
print(my_list)

Execute o script:

python3 /home/labex/project/step5_tuple.py

Saída:

['cat', 'dog', 5]

Assim que seu script converter a lista para uma tupla com sucesso e a imprimir, clique em Verify para completar o laboratório.

Resumo

Parabéns por completar o laboratório! Você adquiriu uma compreensão sólida das estruturas de dados centrais do Python: listas e tuplas.

Você aprendeu a:

  • Criar listas e acessar elementos usando índices positivos e negativos.
  • Extrair sublistas usando fatiamento (slicing).
  • Modificar listas alterando valores, adicionando elementos com append() e insert(), e removendo-os com del, remove() e pop().
  • Ordenar listas no local (in-place) usando o método sort().
  • Iterar sobre listas de forma eficaz usando loops for, enumerate() e zip().
  • Entender a natureza imutável das tuplas e converter entre listas e tuplas.

Estas habilidades são fundamentais para qualquer programador Python e serão inestimáveis em seus projetos futuros.