• Python
  • 06. Armazenamento de múltiplos dados em listas
  • Introdução

06 - Armazenamento de múltiplos dados em listas#

O objetivo de aprendizado deste handout é que, ao final da atividade, você seja capaz de utilizar listas em seus programas em conjunto com as estruturas que vimos nas aulas anteriores (input, if, while, etc.). Vamos começar com um aquecimento.

Exercise 1

Utilizando apenas o que já vimos sobre Python, implemente um programa que pergunta para o usuário a nota de 3 alunos e armazena cada nota em uma variável. Depois de receber os 3 valores, imprima as notas e a média. Para o usuário, seu programa deve se comportar da seguinte maneira caso ele digite 8, 2 e 8 (esse é um exemplo de saída do terminal):

Digite a nota 1: 8
Digite a nota 2: 2
Digite a nota 3: 8
Notas digitadas:
8
2
8
Média: 6

Exercise 2

Altere seu programa do exercício 1 para que ele pergunte 6 notas ao invés de 3. Note que será necessário alterar seu código que imprime todas as notas digitadas e a média. Dica: a solução envolve basicamente copiar e colar código.

E se fosse um MOOC (Massive Open Online Course)?#

O que aconteceria se ao invés de 6 notas tivéssemos 10000 notas? Ainda seria possível (mas definitivamente não recomendável) copiar e colar as mesmas linhas para adaptar o código para essa nova situação. Pior, sempre é possível que o usuário precise de 1 nota a mais e você teria que alterar o seu programa novamente. O problema é que o programa escrito dessa forma pode armazenar uma quantidade fixa de notas. Seria interessante termos alguma forma de armazenar uma quantidade variável de notas, que fosse aumentando conforme a demanda. É aí que entram as listas em Python.

O tipo list#

Listas são uma das formas mais comuns de se organizar uma sequência de dados em Python. Ao invés de criar uma variável para cada valor, podemos criar uma única variável para armazenar uma lista de valores.

a = [3, 5, 2, 4, 9]

Por exemplo, o código acima cria uma lista com os números 3, 5, 2, 4 e 9 e a armazena em uma variável chamada a. Note, que as listas em Python utilizam os colchetes ([]) e entre esses colchetes estão os valores separados por vírgula (,).

Exercise 3

Qual das alternativas abaixo representa uma lista no Python?

Answer

Todas as alternativas apresentadas são formas válidas de organizar valores em Python, porém somente [1, 2, 3, 4, 5] representa uma lista em Python.

Então, é importante lembrarmos de usar os colchetes sempre que quisermos trabalhar com listas em Python.

Para acessar um dado armazenado em uma lista utilizamos a sua posição, ou índice.

Lembrando que em programação começamos a contar a partir de zero, o elemento no índice 0 (zero) é o primeiro elemento (número 3), no índice 1 é o segundo elemento (número 5), no índice 2 é o terceiro elemento (número 2) e assim por diante. Note que o último índice possível é igual ao tamanho da lista subtraído por 1. No nosso exemplo, o índice do último elemento é 4 e a lista tem tamanho 5.

Os elementos da lista são acessados através dos índices.

Exercise 4

Considere o código a seguir:

a = [3, 5, 2, 4, 9]
Qual é o valor armazenado no índice de número 3 da lista?

Answer

No índice 3 da lista se encontra o valor 4.

Cabe tudo em uma lista!#

Uma característica importante de listas é que elas podem guardar qualquer tipo de dados disponível no Python. Basta colocar os itens entre colchetes e separá-los por vírgulas. Por exemplo:

Exercise 5

Qual das opções a seguir NÃO é uma forma de definir uma lista em Python?

Answer

O código (3, 5, 2, 1, 3) não é uma forma de definir lista, pois utiliza parênteses ao invés de colchetes.

As outras alternativas demonstram que podemos armazenar valores do tipo:

  • string: ['banana', 'abóbora', 'maçã', 'jaca']
  • int: [3, 5, 2, 1, 3]
  • float: [3.14, 2.7, 1.00001]

Também não ficamos limitados a armazenar um único tipo dentro da lista, podemos misturar os valores com diferentes tipos em uma mesma lista: ['banana', 2, 3.14, 'jaca', 2].

E por fim, vimos uma lista sem nenhum valor (lista vazia): []

Como vimos no exercício anterior, podemos inclusive criar listas vazias:

sacola_de_compras = []

Mas qual é a utilidade de criar uma lista vazia? Você se lembra que comentamos acima sobre armazenar uma quantidade variável de elementos? Em uma lista é possível adicionar novos elementos conforme a necessidade.

Acessando elementos de uma lista#

Para acessar um elemento de uma lista utilizamos a sua posição (índice) entre colchetes. Por exemplo, para acessar o terceiro elemento da lista a = [3, 5, 2, 4, 9] utilizamos o comando a[2].

Exercise 6

Considere a lista a seguir:

lista = [0, 2, 4, 6, 8, 10]

Qual comando Python que devemos utilizar para acessar o 4° elemento da lista?

Answer

Para acessarmos o 4° elemento da lista, utilizamos o comando lista[3]. Perceba que para acessar um elemento da lista utilizamos colchetes e informamos a posição do elemento que queremos acessar.

No começo podemos nos confundir com as posições dos elementos de uma lista, mas é importante lembrarmos que como a contagem começa em 0, então o 4° se encontra na posição de índice 3.

Exercise 7

Considere a lista a seguir:

fibonacci = [0, 1, 1, 2, 3, 5, 8]

Qual das alternativas abaixo devolve o valor 3 contido na lista?

Answer

O valor 3 ocupa o índice número 4 da lista.

Exercise 8

Faça o exercício Número para mês.

Acessar exercício

Descobrindo o número de elementos em uma lista#

Podemos utilizar a função len() para descobrir o tamanho de uma lista, ou seja, quantos elementos estão disponíveis nessa lista.

Exercise 9

Considere o código a seguir:

lista = [1, 2, 3.14, "arroz", "feijão"]
tamanho_da_lista = len(lista)
print(tamanho_da_lista)

Ao testar o código, o que foi impresso no terminal?

Answer

Foi impresso 5 no terminal, pois o comando len devolve a quantidade de valores armazenados na lista.

Exercise 10

Considere o código a seguir:

dias_da_semana = ["segunda-feira", "terça-feira", "quarta-feira", "quinta-feira", "sexta-feira"]

Qual das alternativas a seguir devolve o valor "sexta-feira"?

Answer

A alternativa correta é:

indice = len(dias_da_semana) - 1
dias_da_semana[indice]

É muito comum utilizarmos o comando len para nos auxiliar em tarefas como acessar o último elemento da lista.

Exercise 11

Considere o código a seguir:

dias_da_semana = ["segunda-feira", "terça-feira", "quarta-feira", "quinta-feira", "sexta-feira"]

Também é possível acessar valores da lista utilizando índices negativos. O código dias_da_semana[-2] acessa o valor "quinta-feira" da lista. Ao utilizar índices negativos, acessamos os valores da lista de trás para frente. Por exemplo, o índice -1 acessa o último valor da lista, o índice -2 acessa o penúltimo valor da lista e assim por diante.

Vamos praticar! Qual das alternativas abaixo acessa o valor "terça-feira" da lista dias_da_semana?

Answer

O código dias_da_semana[-4] devolve o valor "terça-feira".

Exercise 12

Considere ainda a lista dias_da_semana do exercício anterior:

dias_da_semana = ["segunda-feira", "terça-feira", "quarta-feira", "quinta-feira", "sexta-feira"]
indice = len(dias_da_semana)
print(dias_da_semana[indice])

Ao testar o código acima, o que foi impresso no terminal?

Answer

O interpretador Python informou o erro IndexError: list index out of range.

Esse erro é muito comum ao começarmos a trabalhar com listas. Recebemos esta mensagem de erro, quando tentamos acessar um valor da lista que não existe.

O comando len(dias_da_semana) devolve o valor 5, representando o tamanho da lista. Porém, ao tentar acessar o valor na posição 5 o Python reclama, pois não existe nenhum valor nesta posição.

Listas + while#

Vamos ver a utilização das listas em conjunto do operador while 👉 Clique aqui