Pular para o conteúdo
Editor

Listas em Python: criar, acessar, modificar e percorrer

Iniciante30 min8 exercícios145 XP

Este tutorial foi traduzido do original em inglês.Read in EnglishLeer en españolЧитать на русскомอ่านภาษาไทยAvisar sobre um erro de tradução

0/8 exercícios

Pense na sua playlist de músicas favorita. Ela guarda várias músicas em uma ordem específica. Você pode adicionar músicas novas, remover as antigas, mudar a ordem delas ou pular direto para a música número cinco.

Uma lista em Python funciona exatamente assim. É uma coleção ordenada de itens que você pode alterar sempre que quiser. Listas de compras, nomes de alunos, recordes de pontuação, cores de pixels: as listas estão entre as ferramentas mais úteis de todo o Python.

Neste tutorial, você vai aprender a criar listas, acessar itens pela posição, adicionar e remover itens, percorrer listas com um laço, fatiá-las e evitar os erros mais comuns de quem está começando.

Como criar uma lista em Python

Você cria uma lista colocando itens dentro de colchetes [], separados por vírgulas. Cada item pode ser de qualquer tipo: strings, números, booleanos ou até outras listas.

Criando listas com colchetes
# A list of strings
fruits = ["apple", "banana", "cherry"]
print(fruits)
# A list of numbers
scores = [95, 87, 72, 100, 68]
print(scores)
# A list with mixed types
mixed = ["Alice", 15, True, 3.14]
print(mixed)
Saída
['apple', 'banana', 'cherry']
[95, 87, 72, 100, 68]
['Alice', 15, True, 3.14]

Cada item da lista tem uma posição chamada índice. O primeiro item está no índice 0, o segundo no índice 1, e assim por diante. Essa regra de "começar do zero" vale em quase todas as linguagens de programação.

Você também pode criar uma lista vazia e adicionar itens a ela depois. Isso é comum quando você não sabe de antemão o que a lista vai conter.

Listas vazias e o construtor list()
# Empty list - two ways to create one
empty1 = []
empty2 = list()
print(empty1) # []
print(empty2) # []
# The list() constructor can also convert other things into lists
letters = list("hello")
print(letters) # ['h', 'e', 'l', 'l', 'o']
Saída
[]
[]
['h', 'e', 'l', 'l', 'o']

Como acessar itens de uma lista pelo índice em Python

Para pegar um único item de uma lista, coloque o número do índice entre colchetes depois do nome da lista. Lembre-se: os índices começam em 0, não em 1.

Acessando itens com índices positivos
colors = ["red", "green", "blue", "yellow", "purple"]
# Positive indexing (from the front)
print(colors[0]) # red (first item)
print(colors[1]) # green (second item)
print(colors[4]) # purple (fifth item)
Saída
red
green
purple

O Python também aceita índices negativos, que contam a partir do final da lista. -1 é o último item, -2 é o penúltimo, e assim por diante.

Acessando itens com índices negativos
colors = ["red", "green", "blue", "yellow", "purple"]
# Negative indexing (from the end)
print(colors[-1]) # purple (last item)
print(colors[-2]) # yellow (second-to-last)
print(colors[-5]) # red (first item, the long way around)
Saída
purple
yellow
red

Os índices negativos são especialmente úteis quando você quer o último item, mas não sabe o tamanho da lista. my_list[-1] sempre devolve o último.

Conferindo o tamanho da lista para evitar IndexError
colors = ["red", "green", "blue"]
print(len(colors)) # 3 items
# This works fine:
print(colors[2]) # blue (index 2 = third item)
# This crashes:
# print(colors[3]) # IndexError! Only indexes 0, 1, 2 exist
Saída
3
blue

Como modificar listas em Python

Listas são mutáveis, ou seja, você pode alterá-las depois de criadas. Dá para trocar itens individuais, adicionar novos ou juntar listas.

Alterando um item pelo índice

Para substituir um item específico, atribua um novo valor ao índice dele. Isso sobrescreve completamente o valor antigo.

Substituindo um item pelo índice
fruits = ["apple", "banana", "cherry"]
print(fruits) # ['apple', 'banana', 'cherry']
# Change the second item
fruits[1] = "mango"
print(fruits) # ['apple', 'mango', 'cherry']
Saída
['apple', 'banana', 'cherry']
['apple', 'mango', 'cherry']

Adicionando itens com append(), insert() e extend()

O Python oferece três formas de adicionar itens a uma lista. Cada uma funciona de um jeito um pouco diferente.

Três formas de adicionar itens
shopping = ["milk", "eggs"]
# append() adds one item to the END
shopping.append("bread")
print(shopping) # ['milk', 'eggs', 'bread']
# insert() adds one item at a SPECIFIC position
shopping.insert(1, "butter") # Insert at index 1
print(shopping) # ['milk', 'butter', 'eggs', 'bread']
# extend() adds MULTIPLE items from another list
shopping.extend(["cheese", "juice"])
print(shopping) # ['milk', 'butter', 'eggs', 'bread', 'cheese', 'juice']
Saída
['milk', 'eggs', 'bread']
['milk', 'butter', 'eggs', 'bread']
['milk', 'butter', 'eggs', 'bread', 'cheese', 'juice']
append() adiciona como um único item
a = [1, 2, 3]
a.append([4, 5])
print(a)  # [1, 2, 3, [4, 5]]
extend() adiciona cada elemento
a = [1, 2, 3]
a.extend([4, 5])
print(a)  # [1, 2, 3, 4, 5]

Como remover itens de uma lista em Python

Assim como há várias formas de adicionar itens, o Python oferece várias formas de removê-los. A escolha certa depende de você saber o valor ou a posição.

remove() e pop()
pets = ["cat", "dog", "fish", "hamster", "dog"]
# remove() deletes the FIRST matching value
pets.remove("dog")
print(pets) # ['cat', 'fish', 'hamster', 'dog']
# pop() removes by INDEX and returns the removed item
removed = pets.pop(1) # Remove index 1
print(removed) # fish
print(pets) # ['cat', 'hamster', 'dog']
# pop() with no argument removes the LAST item
last = pets.pop()
print(last) # dog
print(pets) # ['cat', 'hamster']
Saída
['cat', 'fish', 'hamster', 'dog']
fish
['cat', 'hamster', 'dog']
dog
['cat', 'hamster']

remove() procura um valor e apaga a primeira ocorrência que encontrar. Se o valor não existir, o Python gera um ValueError.

pop() remove pela posição e devolve o item removido. Isso é útil quando você precisa usar esse item depois de removê-lo, como ao distribuir cartas de um baralho.

del e clear()
numbers = [10, 20, 30, 40, 50]
# del removes by index (doesn't return the value)
del numbers[0]
print(numbers) # [20, 30, 40, 50]
# clear() removes ALL items
numbers.clear()
print(numbers) # []
Saída
[20, 30, 40, 50]
[]

Como percorrer uma lista em Python

Uma das coisas mais poderosas que você pode fazer com uma lista é percorrê-la com um laço: executar um trecho de código uma vez para cada item. É assim que você processa cem itens sem escrever cem linhas.

Laço for básico sobre uma lista
fruits = ["apple", "banana", "cherry"]
# The basic for loop
for fruit in fruits:
print(fruit)
Saída
apple
banana
cherry

Leia assim: "para cada fruta na lista de frutas, exiba essa fruta". O Python pega o primeiro item, executa o código indentado, pega o próximo item, executa de novo, e assim por diante até a lista acabar.

Às vezes você precisa do número do índice junto com o item. A função enumerate() entrega os dois.

Usando enumerate() para obter índice e valor
fruits = ["apple", "banana", "cherry"]
# enumerate() gives you the index AND the item
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
Saída
0: apple
1: banana
2: cherry

Você também pode percorrer a lista usando um intervalo de números de índice. Isso é útil quando você precisa comparar ou modificar itens pela posição.

Laço com range e índice
scores = [85, 92, 78, 95, 88]
# Loop using range(len(...))
for i in range(len(scores)):
print(f"Student {i + 1}: {scores[i]}")
Saída
Student 1: 85
Student 2: 92
Student 3: 78
Student 4: 95
Student 5: 88

Como verificar se um item está em uma lista em Python

A palavra-chave in verifica se um valor existe em uma lista. Ela retorna True ou False.

Usando in e not in
colors = ["red", "green", "blue"]
print("red" in colors) # True
print("yellow" in colors) # False
# You can use it in if statements
if "green" in colors:
print("Green is in the list!")
# not in checks for absence
if "purple" not in colors:
print("Purple is NOT in the list.")
Saída
True
False
Green is in the list!
Purple is NOT in the list.

Isso é muito mais limpo do que escrever um laço para procurar um valor manualmente. Use in sempre que precisar verificar se algo existe em uma lista.

Fatiamento de listas em Python

O fatiamento permite pegar uma parte da lista em vez de um único item. A sintaxe é list[start:end], em que start está incluído e end não está incluído.

Fatiamento básico de listas
letters = ["a", "b", "c", "d", "e", "f"]
# Basic slicing: [start:end]
print(letters[1:4]) # ['b', 'c', 'd'] - indexes 1, 2, 3
# Omit start - defaults to beginning
print(letters[:3]) # ['a', 'b', 'c']
# Omit end - defaults to the end
print(letters[3:]) # ['d', 'e', 'f']
# Both omitted - copies the entire list
print(letters[:]) # ['a', 'b', 'c', 'd', 'e', 'f']
Saída
['b', 'c', 'd']
['a', 'b', 'c']
['d', 'e', 'f']
['a', 'b', 'c', 'd', 'e', 'f']

A regra de "o fim não está incluído" parece estranha no começo, mas tem uma vantagem: letters[:3] devolve exatamente 3 itens, e letters[3:] devolve o resto. Sem confusão de contar um a mais ou um a menos.

Você pode acrescentar um terceiro número, chamado passo (step). Ele diz ao Python quanto avançar de um item para o próximo: um passo 2 pega um item sim, outro não.

Fatiamento com passo
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# [start:end:step]
print(numbers[0:10:2]) # [0, 2, 4, 6, 8] - every other item
print(numbers[::3]) # [0, 3, 6, 9] - every third item
# Negative step reverses the list
print(numbers[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Saída
[0, 2, 4, 6, 8]
[0, 3, 6, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Métodos úteis de listas em Python

As listas do Python vêm com vários métodos embutidos. Estes são os que você vai usar com mais frequência.

sort(), reverse() e count()
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
# sort() arranges items in order (changes the original list)
numbers.sort()
print(numbers) # [1, 1, 2, 3, 4, 5, 6, 9]
# reverse() flips the list order
numbers.reverse()
print(numbers) # [9, 6, 5, 4, 3, 2, 1, 1]
# count() tells you how many times a value appears
print(numbers.count(1)) # 2
Saída
[1, 1, 2, 3, 4, 5, 6, 9]
[9, 6, 5, 4, 3, 2, 1, 1]
2
len(), min(), max() e sum()
scores = [85, 92, 78, 95, 88]
# len() - number of items
print(len(scores)) # 5
# min() - smallest value
print(min(scores)) # 78
# max() - largest value
print(max(scores)) # 95
# sum() - total of all items
print(sum(scores)) # 438
# Calculate the average
average = sum(scores) / len(scores)
print(f"Average: {average}") # Average: 87.6
Saída
5
78
95
438
Average: 87.6

Erros comuns com listas em Python

As listas têm alguns comportamentos traiçoeiros que pegam quase todo iniciante. Entender isso agora vai poupar horas de depuração mais tarde.

Aliasing: os dois nomes apontam para a mesma lista
# The aliasing problem
original = [1, 2, 3]
alias = original # NOT a copy!
alias.append(4)
print(original) # [1, 2, 3, 4] - original changed too!
print(alias) # [1, 2, 3, 4]
Saída
[1, 2, 3, 4]
[1, 2, 3, 4]
Fazendo uma cópia de verdade com [:]
# The fix: make a real copy
original = [1, 2, 3]
real_copy = original[:] # Slice copy
real_copy.append(4)
print(original) # [1, 2, 3] - original is untouched
print(real_copy) # [1, 2, 3, 4]
Saída
[1, 2, 3]
[1, 2, 3, 4]
Alias (mesmo objeto)
a = [1, 2, 3]
b = a         # b IS a
b.append(4)
print(a)      # [1, 2, 3, 4]
Cópia (objeto separado)
a = [1, 2, 3]
b = a[:]      # b is a COPY of a
b.append(4)
print(a)      # [1, 2, 3]

Exercícios práticos

Hora de praticar! Estes exercícios vão se apoiando uns nos outros, do básico ao mais desafiador. Tente resolver cada um antes de olhar as dicas.

Exercício 1: crie uma lista e exiba o tamanho dela
Escreva o código

Crie uma lista chamada animals contendo estas três strings: "cat", "dog", "rabbit".

Depois, exiba o tamanho da lista exatamente neste formato:

3
# Create your list
# Print the length
Exercício 2: acesse o último item com índice negativo
Escreva o código

Você recebe uma lista de cidades. Use índices negativos para exibir a última cidade da lista.

Saída esperada:

Tokyo
cities = ["Paris", "London", "New York", "Tokyo"]
# Print the last city using negative indexing
Exercício 3: lista de compras: adicione e remova itens
Escreva o código

Você tem uma lista de compras. Siga estes passos nesta ordem:

1. Adicione "bread" ao final da lista

2. Remova "milk" da lista

3. Exiba a lista final

Saída esperada:

['eggs', 'cheese', 'butter', 'bread']
shopping = ["eggs", "milk", "cheese", "butter"]
# Step 1: Add "bread" to the end
# Step 2: Remove "milk"
# Step 3: Print the list
Exercício 4: corrija o bug: IndexError
Corrija o erro

Este código tenta exibir a última cor da lista, mas quebra com um IndexError. Corrija o bug para que ele exiba:

purple

Dica: a lista tem 4 itens. Quais são os índices válidos?

colors = ["red", "green", "blue", "purple"]
print(colors[4])
Exercício 5: some todos os números com um laço
Escreva o código

Escreva um programa que calcule a soma de todos os números da lista usando um laço for. Não use a função embutida sum().

Saída esperada:

150
numbers = [10, 20, 30, 40, 50]
# Calculate the total using a for loop
# Print the total
Exercício 6: encontre o maior número sem max()
Escreva o código

Encontre o maior número da lista usando um laço for. Não use a função embutida max().

Saída esperada:

95
scores = [72, 85, 95, 60, 88]
# Find the largest score using a loop
# Print the largest score
Exercício 7: preveja a saída: aliasing de listas
Preveja a saída

Leia este código com atenção e preveja o que ele vai exibir. Pense no que acontece quando duas variáveis apontam para a mesma lista.

Digite a saída exata (cada valor em uma linha nova, se houver vários prints).

a = [1, 2, 3]
b = a
b.append(4)
print(a)
print(b)
Exercício 8: inverta uma lista sem reverse() nem [::-1]
Escreva o código

Inverta a lista dada usando um laço. Não use reverse(), reversed() nem [::-1].

Saída esperada:

[5, 4, 3, 2, 1]
original = [1, 2, 3, 4, 5]
# Reverse the list using a loop
# Print the reversed list

Resumo: o que você aprendeu sobre listas em Python

Parabéns por chegar até o fim deste tutorial! Aqui está um resumo de tudo o que você sabe agora:

ConceitoO que fazExemplo
Criar uma listaGuarda itens em ordemfruits = ["a", "b"]
Acessar pelo índicePega um itemfruits[0], fruits[-1]
Modificar itensAltera um valorfruits[0] = "cherry"
append()Adiciona ao finalfruits.append("date")
insert()Adiciona em uma posiçãofruits.insert(1, "fig")
remove()Apaga pelo valorfruits.remove("a")
pop()Apaga pelo índicefruits.pop(0)
Laço forProcessa cada itemfor f in fruits:
in / not inVerifica se o item está na lista"a" in fruits
FatiamentoPega uma partefruits[1:3]
sort() / reverse()Reordena os itensfruits.sort()
len() / sum()Conta ou somalen(fruits)

As listas estão entre as estruturas de dados mais usadas em Python. Quase todo programa real usa listas, de aplicações web a ciência de dados e desenvolvimento de jogos.

O que vem a seguir?

No próximo tutorial, List comprehensions em Python, você vai aprender um atalho poderoso para criar e transformar listas em uma única linha de código.

Você vai ver como trocar 4 linhas de laço por uma única linha limpa e aprender quando as compreensões fazem sentido e quando um laço comum é melhor.

Tutoriais relacionados

Este tutorial foi útil?