Instituto Federal de Mato Grosso do SulJunho/2024

IFMS marca

08. Listas

Construção de Algoritmos

Prof. Rodrigo Duran

Nesta aula vamos:


  • Aprender a manipular listas e suas ações

    Vamos observar como variáveis podem armazenar mais de um valor (elemento) utilizando listas e como manipular essas listas utilizando tanto índices quanto ações de listas em Python.

Variáveis: só pode haver um?

Etiquetals

Uma variável Um local nomeado para um único valor na memória do computador só pode armazenar um valor (em um dado momento)... certo?


Declarando uma variável inteira e inicializando com 0
numero = 0

Declarando uma variável String e inicializando-a
name = "Construção de Algoritmos"

Alterando o valor da variável
numero = 3
print(numero)
Coleções

Coleções

Entretanto, em várias situações é desejável que o computador manipule informações que são relacionadas entre si. Por exemplo:

  • Medições de temperatura no decorrer do ano
  • População de uma cidade durante uma década
  • Lista de compras, listas de tarefas
  • Suas notas na disciplina de Construção de Algoritmos.

Para armazenar esse tipo de informação, nós utilizamos coleções. Uma coleção pode conter, por exemplo, todos os seus amigos no WhatsApp. Um valor armazenado em uma coleção é chamado de elemento. Um elemento pode ser um único contato na sua lista de contatos, por exemplo.

Lista

Criando Listas


Um dos tipos de coleções em Python é a listauma coleção de determinado tamanho, incluindo tamanho 0 (sem elementos), que referencia a ordem de seus elementos por um índice.. Listas são ordenadas, mutáveis, e permitem valores duplicados. Para criar uma lista basta declarar uma variável inicializando-a com os valores entre [ ]. Cada elemento dentro da lista é separado por virgulas.

Declarando uma lista de inteiros
meusNumeros = [1, 2 , 3, 4]

Declarando uma lista de strings
contatinhos = ["José", "Vitor", "André", "Fabio"]

Declarando uma lista vazia
vazio = []

Imprimindo Listas


Você pode imprimir uma variável lista

frutas = ["Banana", "Laranja", "Maçã", "Manga"]
print(frutas)

["Banana", "Laranja", "Maçã", "Manga"]

Ou imprimir cada um de seus elementos

print(frutas[1])
Laranja
print(frutas[3])
Manga
print(frutas[4])
Undefined

Manipulando Listas


Os elementos de uma lista podem ser manipulados como uma variável

numeros = [1, 3, 5 ,7, 9]
print(numeros[0])

1

print(numeros[0]+numeros[1])
4

print(numeros[2]+ 20)
25
print(numeros[1:3])
[3, 5]
print(numeros[:3])
[1, 3, 5]
print(numeros[2:])
[5, 7, 9]

Visualizando Listas


QUIZ!

A lista está corretamente criada?

coisas = ["Meias" "Tênis" "Rolha"]
print(coisas)

QUIZ!

A lista está corretamente criada?

impar = {1, 3, 5, 7, 9}
print(impar)

QUIZ!

O que será impresso no console pelo programa abaixo?

pares = [2, 8, 0, 4, 6, 10]
print(pares)

  1. pares
  2. 2
  3. []
  4. 10
  5. 2, 8, 0, 4, 6, 10

QUIZ!

O que será impresso no console pelo programa abaixo?

pares = [2, 8, 0, -1, 6, 10]
x = pares[2+2]
print(x)

  1. Undefined
  2. 8
  3. 6
  4. -1
  5. 0

Manipulando listas


Você pode alterar, adicionar ou remover elementos de uma lista...

contatinhos = ["José", "Vitor", "André", "Fabio"]
contatinhos[1] = "Paulo"

["José", "Paulo", "André", "Fabio"]

contatinhos.append("Michael")
["José", "Paulo", "André", "Fabio", "Michael"]

contatinhos.insert(1,"Carlos")
["José", "Carlos", "Paulo", "André", "Fabio", "Michael"]

print(contatinhos.pop())
Michael

print(contatinhos.pop(1))
["José", "Paulo", "André", "Fabio"]

print(contatinhos.remove("Paulo"))
["José", "André", "Fabio"]
if ("André" in contatinhos):
  print("André presente!")

"André presente!"

contatinhos.clear()
[]

frutas = ["maçã", "banana", "cereja", "kiwi", "manga"]
frutascoma = [f for f in frutas if "a" in f]

["maçã", "banana", "cereja", "manga"]

quadrados = [x*x for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

frutas2 = frutascoma.copy()
["maçã", "banana", "cereja", "manga"]

frutas3 = frutas + frutas2
["maçã", "banana", "cereja", "kiwi", "manga", "maçã", "banana", "cereja", "manga"]

QUIZ!

O que será impresso no console pelo programa abaixo?

avengers = ["Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman"]
avengers[3] = "Scarlet Witch"
print(avengers)

  1. ["Captain America", "Hulk", 3, "Black Widow", "Hawkeye", "Ironman"]
  2. ["Captain America", "Hulk", "Scarlet Witch", "Black Widow", "Hawkeye", "Ironman"]
  3. ["Captain America", "Hulk", "Thor", "Scarlet Witch", "Hawkeye", "Ironman"]
  4. ["Captain America", "Hulk", "Thor", 3, "Hawkeye", "Ironman"]

QUIZ!

O que será impresso no console pelo programa abaixo?

avengers = ["Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman"]
print(avengers.pop())

  1. ["Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman"]
  2. ["Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye"]
  3. ["Captain America", "Thor", "Black Widow", "Hawkeye", "Ironman"]
  4. ["Hulk", "Thor", "Black Widow", "Hawkeye"]

QUIZ!

O que será impresso no console pelo programa abaixo?

avengers = ["Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman"]
avengers.append("Spiderman")
print(avengers)

  1. ["Spiderman", "Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman"]
  2. ["Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman", "Spiderman"]
  3. ["Captain America", "Spiderman", "Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman"]
  4. ["Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye", "Spiderman", "Ironman"]

QUIZ!

O que será impresso no console pelo programa abaixo?

avengers = ["Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman"]
avengers.append("Spiderman")
avengers.pop(0)
avengers.append("Vision")
avengers.pop()
print(avengers)

  1. ["Spiderman", "Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye"]
  2. ["Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman", "Vision"]
  3. ["Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman", "Spiderman", "Vision"]
  4. ["Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman", "Spiderman"]

Propriedades e funcões úteis


Tamanho de uma lista

legumes = ["cebola", "alho", "quiabo"]
print(len(legumes))

3

Inidice de um determinado elemento

indice = legumes.index("alho")
print(indice)

1
indice2 = legumes.index("cenoura")
print(indice2)

-1

Invertendo a ordem de uma lista

A lista original será alterada
legumes.reverse()
print(legumes)

["quiabo", "alho", "cebola"]

Ordenando uma lista

Você pode usar o sort para estabelecer um critério de ordenação
legumes = ["cebola", "alho", "quiabo", "cenoura"]
legumes.sort()
print(legumes)

['alho', 'cebola', 'cenoura', 'quiabo']

legumes = ["cebola", "alho", "quiabo", "cenoura"]
legumes.sort(key=len)
print(legumes)

['alho', 'cebola', 'quiabo', 'cenoura']

QUIZ!

O que será impresso no console pelo programa abaixo?

avengers = ["Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman"]
avengers.sort()
print(avengers)

  1. ['Hulk', 'Thor', 'Hawkeye', 'Ironman', 'Black Widow', 'Captain America']
  2. ['Black Widow', 'Captain America', 'Hulk', 'Hawkeye', 'Ironman', 'Thor']
  3. ['Hulk', 'Thor', 'Hawkeye', 'Ironman', 'Captain America'], 'Black Widow'
  4. ['Black Widow', 'Captain America', 'Hawkeye', 'Hulk', 'Ironman', 'Thor']

QUIZ!

O que será impresso no console pelo programa abaixo?

avengers = ["Captain America", "Hulk", "Thor", "Black Widow", "Hawkeye", "Ironman"]
westcoastavengers = avengers[3:]
print(westcoastavengers)

  1. ["Black Widow", "Hawkeye", "Ironman"]
  2. ["Hawkeye", "Ironman"]
  3. ["Thor", "Black Widow", "Hawkeye", "Ironman"]

Propriedades e funcões úteis


Criando uma lista a partir de uma string

O parâmetro diz qual é a string (caracter) que será usado para subdividir a string original
pacote = "Rodrigo|IFMS|Londrina|PR"
informacao = pacote.split("|")
print(informacao)

["Rodrigo", "IFMS", "Londrina", "PR"]

Copiando uma variável lista para outra variável

numeros = [1, 2, 3, 5]
nnum = list(numeros)
print(nnum)

[1, 2, 3, 5]

Note que uma simples atribuição não copia uma variável lista para outra variável!

nnum = numeros
numeros.append(6)
print(numeros, nnum)

[1, 2, 3, 5, 6] [1, 2, 3, 5, 6]

Acessando o primeiro elemento da lista

O índice das listas sempre começam com 0 e não 1!
frutas = ["abacaxi", "morango", "banana", "kiwi"]
primeiro = frutas[0]
print(primeiro)

abacaxi

Acessando o último elemento da lista

Se a lista tem tamanho X, seu último elemento estará no índice X-1
frutas = ["abacaxi", "morango", "banana", "kiwi"]
ultimo = frutas[len(frutas)-1]
print(ultimo)

kiwi
ultimo = frutas[-1]
print(ultimo)

kiwi
penultimo = frutas[-2]
print(penultimo)
banana

QUIZ!

O que será impresso no console pelo programa abaixo?

mxyzptlk = "msgpisegredopialgpi2"
decode = mxyzptlk.split("pi")
print(decode)

  1. "msg pi segredo pi alg pi 2"
  2. "msg segredo alg 2"
  3. [msg, pi, segredo, pi, alg, pi, 2]
  4. [msg, segredo, alg, 2]

QUIZ!

Substitua o ? pelo código correspondente para copiar a lista chave na lista copia

chave = [12,37,1578,1,-3]
copia = ?
print(copia)

Template: Procurar e remover


Templates são planos (ou estereótipos) que serão frequentemente utilizados para solucionar um determinado problema em um determinado contexto.

No caso do template de procurar e remover temos como um problema remover um item qualquer de uma coleção espera-se como resultado a lista sem o item desejado ou uma mensagem de erro caso o item não exista dentro da lista.

Plano procurar e remover