Listas

Listas são sequências mutáveis e ordenadas de objetos. Os elementos de uma lista podem ser alterados ou eliminados.

Os elementos de uma lista são indexados, sendo o índice do primeiro elemento o zero.

Criação de uma lista

Uma lista é criada especificando os seus elementos entre parenteses retos e separados por vírgulas. Os elementos de uma lista não necessitam ser todos do mesmo tipo.

#Criação de uma lista
lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']

Podemos criar listas dentro de listas:

lista = [1, 2, 3, [4, 5, 6]]

Tamanho de uma lista

Obtemos o tamanho de uma lista através da função len():

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']

#mostra o tamanho da lista:
print( len(lista) )  #Output: 8

Acesso aos elementos de uma lista

Acesso através de índice

O acesso a um elemento é feito pondo um índice entre parenteses reto:

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']
print( lista[0] ) # mostra o elemento 1
print( lista[3] ) # mostra o elemento 'Faro'

Podemos alterar o valor de um elemento:

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']

lista[2] = 6  #altera o 3º elemento

Podemos aceder ao último elemento de uma lista com o índice -1, ao penúltimo, com o índice -2, etc..:

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']

print( lista[-1] ) # mostra o último elemento 'Almada'
print( lista[-2] ) # mostra o penúltimo elemento 4'

Acesso a um intervalo de elementos através de fatiamento (slicing)

Podemos aceder a um intervalo elementos especificando um intervalo de índices entre um início e um fim, exclusive:

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']

print( lista[1:3] ) # mostra o segundo e terceiro elementos ('Lisboa', 2).

Se o índice de fim for omitido, mostra todos os elementos desde o índice de início até ao fim da lista:

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']

print( lista[3:] ) # mostra todos os elementos desde o elemento com o índice 3 ('Faro') até ao fim da lista.

Desempacotamento

O desempacotamento em listas em Python permite atribuir, de forma direta, os valores de uma lista para múltiplas variáveis em uma única linha.

Exemplo:

lista = [1, 2, 3]
a, b, c = lista
# a = 1, b = 2, c = 3

Se a quantidade de variáveis não corresponder ao número de elementos, ocorre erro.

Se não quisermos usar todos os valores, podemos usar o underscore (_) para ignorar variáveis:


lista = [1, 2, 3]
a, _, _ = lista
print(a)   #Saída: 1

Podemos usar o operador * para capturar múltiplos valores de uma lista:

numeros = [1, 2, 3, 4, 5]
primeiro, *meio, ultimo = numeros
# primeiro = 1, meio = [2, 3, 4], ultimo = 5

O operador * pode aparecer em qualquer posição, exceto sozinho, e é útil para capturar o “resto” dos elementos.

Também é possível desempacotar listas ao passar argumentos para funções, usando * para passar cada elemento como um argumento separado:

def soma(a, b, c):
    return a + b + c

valores = [1, 2, 3]
resultado = soma(*valores)  # resultado = 6

Operações com listas

As operações com listas são as operações básicas que se usam com sequências, e são as seguintes:

OperaçãoOutputDescrição
[10, 20, 30]+ [40, 50, 60][10, 20, 30, 40, 50, 60]Concatenação
[ 1, 3, 5] * 3[1, 3, 5, 1, 3, 5, 1, 3, 5]Repetição
40 in [30, 40, 50]TruePertença
for x in [10,20,30]: print(x)10 20 30Iteração

Percorrer uma lista

Iteração de uma lista percorrendo diretamente os seus elementos:

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']

for e in lista:
    print( e )

O output do exemplo acima é:

1
Lisboa
2
Faro
3
Évora
4
Almada

Iteração de uma lista percorrendo os seus elementos usando os seus índices e a função range():

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']


# obtemos o intervalo de índices da lista com a função range()
# e percorremos esse intervalo de índices:

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

Output:

1
Lisboa
2
Faro
3
Évora
4
Almada

Adicionar elementos a uma lista

Para adicionar um elemento no final de uma lista usamos o método append():

lista = [1, 2, 3, 4]

lista.append(5)
print(lista)

Output:

[1, 2, 3, 4, 5]

Para adicionar os elementos de uma lista no final de outra lista usamos o método extend():

lista = [1, 2, 3, 4]

lista.extend([10, 20, 30])
print(lista)

Output:

[1, 2, 3, 4, 10, 20, 30]

Para inserirmos um elemento numa determinado posição de uma lista, usamos o método insert():

lista = [1, 2, 3, 4]

#insere o elemento 10 na 2ª posição da lista:
lista.insert(1, 10)
print(lista)

Output:

[1, 10, 2, 3, 4]

Verificar se um elemento existe numa lista

Para verificar se um elemento existe numa lista, podemos usar o operador in:

ista = [1, 2, 3, 4, 5, 6, 3]

if 3 in lista:
    print("Existe na lista")
else:
    print("Não existe na lista")

Output:

"Existe na lista"

Eliminação de elementos de uma lista

Podemos eliminar elementos de uma lista usando a instrução del ou o método remove().

Instrução del

A instrução del remove elementos de uma lista através de um índice ou intervalo de índices.

Exemplo 1 :

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']
 
 #elimina o elemento com o índice 1 ('Lisboa'):
 del lista[1]
 print(lista)

Output:

[1, 2, 'Faro', 3, 'Évora', 4, 'Almada']

Exemplo 2:

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']
 
 #elimina o elementos com os índices 1, 2, 3, 4 :
 del lista[1:5]
 print(lista)

Output:

[1, 'Évora', 4, 'Almada']

Método remove()

O método remove() permite eliminar um elemento pelo seu valor, não pelo seu índice:

lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Almada']
 
 #elimina o elementos 'Faro' :
 lista.remove('Faro')
 
 print( lista )

Output:

[1, 'Lisboa', 2, 3, 'Évora', 4, 'Almada']

Se houver vários elementos com o mesmo valor o método remove() elimina o primeiro:

 lista = [1, 'Lisboa', 2, 'Faro', 3, 'Évora', 4, 'Faro', 'Almada']
 
 #elimina o 1º elemento 'Faro' :
 lista.remove('Faro')
 
 print( lista )

Output:

[1, 'Lisboa', 2, 3, 'Évora', 4, 'Faro', 'Almada']

NOTA: caso tentemos remover um elemento que não exista na lista dá erro.

Funções com listas

max()

A função max(), retorna o elemento com o maior valor da lista.

lista = [73, 21, 98, 7]
print(max(lista))    #Saída: 98

min()

A função min(), retorna o elemento com o menor valor da lista.

lista = [73, 21, 98, 7]
print(min(lista))    #Saída: 7