Ir para o conteúdo

Listas

Uma lista (list) é uma estrutura de dados utilizada para representar uma sequência de objetos em Python.

Em uma lista, a ordem dos elementos importa e um mesmo objeto pode aparecer mais de uma vez.

Por exemplo:

frutas = ["maçã", "banana", "laranja", "banana"]

Nesse caso, "banana" aparece duas vezes e ocupa posições diferentes na sequência.

A ordem também faz parte da informação armazenada:

lista1 = ["A", "B", "C"]
lista2 = ["C", "B", "A"]

print(lista1 == lista2)

Resultado:

False

Embora as duas listas possuam os mesmos elementos, elas representam sequências diferentes porque a ordem não é a mesma.

Estrutura

Uma lista em Python é representada por elementos separados por vírgulas e delimitados por colchetes [].

frutas = ["maçã", "banana", "laranja", "uva"]

Cada elemento ocupa uma posição, chamada de índice.

Os índices começam em 0:

Índice:    0         1          2        3
          ┌─────────┬──────────┬────────┬─────┐
Lista:    │  maçã   │ banana   │ laranja│ uva │
          └─────────┴──────────┴────────┴─────┘

Assim:

print(frutas[0])  # maçã
print(frutas[1])  # banana
print(frutas[2])  # laranja

Python também permite utilizar índices negativos para acessar elementos a partir do final da lista:

print(frutas[-1])  # uva
print(frutas[-2])  # laranja

Criação de listas

Uma lista pode ser criada utilizando colchetes:

numeros = [10, 20, 30, 40, 50]

Também é possível criar uma lista vazia:

lista = []

Ou utilizando o construtor list():

lista = list()

Uma lista pode armazenar objetos de diferentes tipos:

dados = [10, "Python", 3.14, True]

Também podemos criar listas contendo outras listas:

matriz = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

Acesso a elementos

O acesso aos elementos de uma lista é realizado utilizando o índice:

frutas = ["maçã", "banana", "laranja"]

print(frutas[0])
print(frutas[1])
print(frutas[2])

Resultado:

maçã
banana
laranja

Tentar acessar um índice que não existe gera uma exceção IndexError:

print(frutas[5])

Atualização de elementos

Os elementos de uma lista podem ser modificados diretamente utilizando seus índices.

frutas = ["maçã", "banana", "laranja"]

frutas[1] = "abacaxi"

print(frutas)

Resultado:

["maçã", "abacaxi", "laranja"]

A atualização modifica o objeto armazenado naquela posição, mas não altera a quantidade de elementos da lista.

Adição de elementos

O método append() adiciona um elemento ao final da lista.

frutas = ["maçã", "banana"]

frutas.append("laranja")

print(frutas)

Resultado:

["maçã", "banana", "laranja"]

Também é possível adicionar vários elementos utilizando extend():

frutas = ["maçã", "banana"]

frutas.extend(["laranja", "uva"])

print(frutas)

Resultado:

["maçã", "banana", "laranja", "uva"]

É importante perceber a diferença entre append() e extend().

Com append(), a lista recebida é adicionada como um único elemento:

lista = [1, 2]

lista.append([3, 4])

print(lista)

Resultado:

[1, 2, [3, 4]]

Com extend(), os elementos da outra sequência são adicionados individualmente:

lista = [1, 2]

lista.extend([3, 4])

print(lista)

Resultado:

[1, 2, 3, 4]

Inserção em uma posição específica

O método insert() permite adicionar um elemento em uma posição determinada.

frutas = ["maçã", "banana", "laranja"]

frutas.insert(1, "uva")

print(frutas)

Resultado:

["maçã", "uva", "banana", "laranja"]

O novo elemento passa a ocupar a posição indicada e os elementos seguintes são deslocados.

Remoção de elementos

Python oferece diferentes formas de remover elementos de uma lista.

Remover pelo valor

O método remove() remove a primeira ocorrência de determinado valor.

frutas = ["maçã", "banana", "laranja", "banana"]

frutas.remove("banana")

print(frutas)

Resultado:

["maçã", "laranja", "banana"]

Observe que apenas a primeira ocorrência de "banana" foi removida.

Caso o elemento não exista, remove() gera uma exceção ValueError.

Remover pelo índice

O método pop() remove um elemento utilizando seu índice.

frutas = ["maçã", "banana", "laranja"]

removida = frutas.pop(1)

print(removida)
print(frutas)

Resultado:

banana
["maçã", "laranja"]

Se nenhum índice for informado, pop() remove o último elemento:

frutas = ["maçã", "banana", "laranja"]

frutas.pop()

print(frutas)

Resultado:

["maçã", "banana"]

Remover utilizando del

Também é possível utilizar del:

frutas = ["maçã", "banana", "laranja"]

del frutas[1]

print(frutas)

Resultado:

["maçã", "laranja"]

Tamanho da lista

A função len() retorna a quantidade de elementos existentes na lista.

frutas = ["maçã", "banana", "laranja"]

print(len(frutas))

Resultado:

3

É importante diferenciar o tamanho da lista do maior índice.

Em uma lista com três elementos:

Índices:   0     1     2
Elementos: A     B     C

O tamanho é 3, mas o último índice é 2.

Verificar se um elemento existe

O operador in permite verificar se determinado elemento está presente na lista.

frutas = ["maçã", "banana", "laranja"]

print("banana" in frutas)

Resultado:

True

Também é possível utilizar not in:

print("uva" not in frutas)

Resultado:

True

Percorrer a lista

Uma das operações mais comuns é percorrer todos os elementos utilizando um laço for.

frutas = ["maçã", "banana", "laranja"]

for fruta in frutas:
    print(fruta)

Resultado:

maçã
banana
laranja

Também é possível percorrer a lista utilizando os índices:

for i in range(len(frutas)):
    print(frutas[i])

Quando o índice não é necessário, utilizar diretamente o elemento costuma deixar o código mais simples.

Slicing

Python possui uma funcionalidade chamada slicing, que permite obter uma parte da lista.

A sintaxe básica é:

lista[inicio:fim]

Por exemplo:

numeros = [10, 20, 30, 40, 50]

print(numeros[1:4])

Resultado:

[20, 30, 40]

O índice inicial é incluído, mas o índice final não.

Também podemos utilizar:

numeros[:3]    # primeiros três elementos
numeros[2:]    # a partir do índice 2
numeros[:]     # todos os elementos

É possível ainda utilizar um passo:

numeros[::2]

Nesse caso, os elementos são obtidos de dois em dois.

Ordenação

O método sort() permite ordenar os elementos da própria lista.

numeros = [50, 10, 40, 20, 30]

numeros.sort()

print(numeros)

Resultado:

[10, 20, 30, 40, 50]

Também é possível ordenar em ordem decrescente:

numeros.sort(reverse=True)

print(numeros)

Resultado:

[50, 40, 30, 20, 10]

Outra alternativa é utilizar a função sorted(), que retorna uma nova lista ordenada:

numeros = [50, 10, 40, 20, 30]

ordenados = sorted(numeros)

print(ordenados)

Nesse caso, a lista original não é modificada.

Contagem e localização

O método count() informa quantas vezes determinado elemento aparece na lista:

numeros = [10, 20, 10, 30, 10]

print(numeros.count(10))

Resultado:

3

Já o método index() retorna a posição da primeira ocorrência:

frutas = ["maçã", "banana", "laranja"]

print(frutas.index("banana"))

Resultado:

1

Listas podem conter objetos repetidos

Uma característica importante de uma lista é permitir elementos repetidos.

notas = [10, 8, 10, 7, 10]

print(notas)

Resultado:

[10, 8, 10, 7, 10]

Cada ocorrência possui sua própria posição na sequência.

print(notas[0])  # 10
print(notas[2])  # 10
print(notas[4])  # 10

Portanto, uma lista não deve ser confundida com uma estrutura que representa apenas um conjunto de valores distintos.

Listas são sequências

A ideia de sequência é fundamental para compreender list em Python.

Uma sequência possui uma ordem definida:

sequencia = ["A", "B", "C", "D"]

Podemos identificar cada elemento pela sua posição:

A → posição 0
B → posição 1
C → posição 2
D → posição 3

A ordem faz parte da informação representada pela lista.

Por isso:

["A", "B", "C"] != ["C", "B", "A"]

Além disso, uma sequência pode conter elementos repetidos:

["A", "B", "A", "C", "A"]

Nesse caso, as três ocorrências de "A" fazem parte da sequência.

Exemplo completo

O exemplo abaixo demonstra algumas das principais operações realizadas com uma lista em Python:

frutas = ["maçã", "banana", "laranja"]

print("Lista inicial:")
print(frutas)

print("\nPrimeiro elemento:")
print(frutas[0])

frutas.append("uva")

print("\nApós adicionar:")
print(frutas)

frutas.insert(1, "abacaxi")

print("\nApós inserir:")
print(frutas)

removida = frutas.pop(2)

print("\nElemento removido:")
print(removida)

print("\nApós remoção:")
print(frutas)

frutas[0] = "morango"

print("\nApós atualização:")
print(frutas)

print("\nElementos:")
for fruta in frutas:
    print(fruta)

Conclusão

A list é uma das principais estruturas de dados do Python e representa uma sequência de objetos.

Suas principais características são:

  • Os elementos possuem uma ordem.
  • Cada elemento possui uma posição.
  • Os índices começam em 0.
  • Elementos podem ser repetidos.
  • A lista pode ser modificada.
  • Elementos podem ser adicionados e removidos.
  • Uma lista pode armazenar diferentes tipos de objetos.
  • Python fornece diversos métodos para sua manipulação.

Compreender list é fundamental para trabalhar com coleções de dados em Python e para avançar no estudo de estruturas de dados e algoritmos.