Coleções em Python: Listas

Em quatro artigos, estudaremos as coleções na linguagem Python. Quais são suas principais características e uso. Tudo com exemplos e questões de concursos. Iniciaremos pelas listas. As tuplas, sets e dicionários, veremos nas partes seguintes. Então, simbora comigo!

Avatar


12 de fevereiro8 min. de leitura

Fala, meus consagrados! Tudo beleza com vocês?

Em quatro artigos, estudaremos as coleções na linguagem Python. Quais são suas principais características e uso. Tudo com exemplos e questões de concursos. Iniciaremos pelas listas. As tuplas, sets e dicionários, veremos nas partes seguintes.

Então, simbora comigo!


Visão geral

São quatro as coleções em Python:

  • Lista;
  • Tupla;
  • Set; e
  • Dicionário.

Na tabela 1, temos as principais características dessas coleções.

Característica

Lista

Tupla

Set

Dicionário

Ordenada

Sim

Sim

Não

Sim

Mutável

Sim

Não

Sim

Sim

Indexada

Sim

Sim

Não

Sim

Permite membros repetidos

Sim

Sim

Não

Não

Tabela 1: principais características das coleções em Python.

Observação: a partir da versão Python 3.7, os dicionários são ordenados.

Exemplos:

# Lista []
linguagens = ["Python", "Java", "PHP", "C"]

# Tupla ()
linguagens = ("Python", "Java", "PHP", "C")

# Set {}
linguagens = {"Python", "Java", "PHP", "C"}

# Dicionário {}
optimus = {"id": 1, "nome": "Optimus Prime"}

Listas

São coleções:

  • Ordenadas;
  • Mutáveis;
  • Indexadas; e
  • Que permitem membro repetidos.

As listas são escritas com colchetes [ ].

Com uma série de exemplos, vamos entender o uso de listas. Após isso, iremos resolver várias questões que citam essa
coleção.

Primeiro ponto é sabermos como criar listas em Python. Podemos criar com o construtor list(), podendo já passar
elementos como parâmetros, ou já informando os elementos envoltos em colchetes.

Como exemplos, criaremos duas listas com quatro elementos (quatro linguagens de programação):

linguagens1 = list(["Python", "Java", "PHP", "C"])
print(linguagens1) # Será impresso ['Python', 'Java', 'PHP', 'C']

linguagens2 = ["Python", "Java", "PHP", "C"]
print(linguagens2) # Será impresso ['Python', 'Java', 'PHP', 'C']

Uma lista pode ser criada a partir de outra, ainda usando o construtor list(), passando a lista original como
parâmetro:

# Lista original.
linguagens1 = ["Python", "Java", "PHP", "C"]
print(linguagens1) # Será impresso ['Python', 'Java', 'PHP', 'C']

# Lista criada a partir de outra.
linguagens2 = list(linguagens1)
print(linguagens2) # Será impresso ['Python', 'Java', 'PHP', 'C']

Para imprimir uma lista, podemos usar a função print():

linguagens = ["Python", "Java", "PHP", "C"]
print(linguagens) # Será impresso ['Python', 'Java', 'PHP', 'C']

Para acessar um elemento da lista, utiliza-se a indexação numérica (lista[n]), informando qual a posição da lista
(n):

linguagens = ["Python", "Java", "PHP", "C"]

# Imprimindo o terceiro elemento "PHP".
print(linguagens[2]) # Será impresso PHP

Observação: em Python, o primeiro elemento de uma lista começa na posição 0.

Podemos também acessar um intervalo de elementos (lista[n:m]), informando o índice inicial (n) e o índice final
de uma lista (m – não incluído):

linguagens = ["Python", "Java", "PHP", "C"]

# Imprimindo os elementos da posição 0 até a posição 1.
print(linguagens[0:2]) # Será impresso ['Python', 'Java']

Observação: no exemplo acima, lemos da seguinte forma: traga os elementos da posição 0 (primeiro índice
informado) até a posição 1 (posição anterior ao segundo índice informado). Por isso que o elemento PHP (índice 2) não é
impresso.

Pode-se alterar o valor de um elemento, indicando seu índice e seu novo valor:

linguagens = ["Python", "Java", "PHP", "C"]

# Alterando o elemento de índice 2 (terceiro elemento): de "PHP" para "C#".
linguagens[2] = "C#"
print(linguagens) # Será impresso ['Python', 'Java', 'C#', 'C']

Agora acessaremos cada elemento utilizando uma estrutura de repetição for:

linguagens = ["Python", "Java", "PHP", "C"]

for x in linguagens:
    print(x)

O que será impresso é:

Python
Java
PHP
C

O operador in também pode ser usado para verificar se um elemento está na lista:

linguagens = ["Python", "Java", "PHP", "C"]
if "Python" in linguagens:
    print("Python está na lista das linguagens de programação") # Será impresso Python está na lista das linguagens de programação

Nesse caso, será impressa a frase porque o elemento “Python” está na lista.

Os operadores not in são usados para verificar se um elemento não está na lista:

linguagens = ["Python", "Java", "PHP", "C"]

if "C#" not in linguagens:
    print("C# não está na lista das linguagens de programação") # Será impresso C# não está na lista das linguagens de programação

Nesse caso, será impressa a frase porque o elemento “C#” não está na lista.

Para retornar o tamanho de uma lista (quantidade de elementos), utiliza-se a função len():

linguagens = ["Python", "Java", "PHP", "C"]
print(len(linguagens)) # Será impresso 4

Veremos duas formas para adicionar um elemento na lista. Primeiro, usaremos o método append(), informando um
elemento como parâmetro:

linguagens = ["Python", "Java", "PHP", "C"]

# Inserindo um elemento no final da lista.
linguagens.append("C#")
print(linguagens) # Será impresso ['Python', 'Java', 'PHP', 'C', 'C#']

Ao usar o método append(), ele insere o elemento no final da lista.

Mas podemos inserir um elemento em uma posição na lista usando o método insert(), informando a posição e o valor:

linguagens = ["Python", "Java", "PHP", "C"]

# Inserindo o elemento "JavaScript" na segunda posição da lista.
linguagens.insert(1, "JavaScript")
print(linguagens) # Será impresso ['Python', 'Javascript', 'Java', 'PHP', 'C']

Ao usar o método insert(), os demais elementos da lista serão remanejados para frente, após o elemento novo inserido.

Agora, entenderemos formas de remoção de elementos de uma lista. Começando com a remoção de um elemento específico
usando o método remove(), informando qual o item a ser excluído da lista:

linguagens = ["Python", "Java", "PHP", "C"]

# Removendo o elemento "PHP".
linguagens.remove("PHP")
print(linguagens) # Será impresso ['Python', 'Java', 'C']

Ao usar o método remove(), os demais elementos da lista serão remanejados, depois do elemento citado ser excluído.

Pode-se remover um elemento em uma posição específica de duas formas: através do método pop(n), informando a
posição (n), ou usando a palavra-chave del, seguida da lista e do índice do elemento a ser removido (del
lista[n]):

linguagens = ["Python", "Java", "PHP", "C"]

# Removendo o primeiro elemento "Python".
linguagens.pop(0)
print(linguagens) # Será impresso ['Java', 'PHP', 'C']

# Removendo o segundo elemento "PHP" dos elementos que restaram.
del linguagens[1]
print(linguagens) # Será impresso ['Java', 'C']

Ao usar o método pop(n) ou a palavra-chave del, os demais elementos da lista serão remanejados, depois do elemento
citado ser excluído.

O método pop(), quando usado sem parâmetro, remove o último elemento da lista:

linguagens = ["Python", "Java", "PHP", "C"]

# Removendo o elemento "C".
linguagens.pop()
print(linguagens) # Será impresso ['Python', 'Java', 'PHP']

Para finalizarmos sobre a remoção de itens, podemos excluir todos os itens da lista usando o método clear():

linguagens = ["Python", "Java", "PHP", "C"]
linguagens.clear()
print(linguagens) # Será impresso []

Pode-se copiar a lista para outra, usando o método copy():

linguagens = ["Python", "Java", "PHP", "C"]
ling = linguagens.copy()

print(linguagens) # Será impresso ['Python', 'Java', 'PHP', 'C']
print(ling) # Será impresso ['Python', 'Java', 'PHP', 'C']

Finalizando, podemos juntar duas listas em uma, usando o operador +:

lista1 = ["a", "b" , "c", 1]
lista2 = [1, 2, 3]

lista3 = lista1 + lista2
print(lista3) # Será impresso ['a', 'b', 'c', 1, 1, 2, 3]

Observação: vejam que a lista3 possui elementos repetidos (1, 1), pois as listas em Python aceitam isso.

Item Descrição
list() Cria uma nova lista
print() Imprime o valor de uma variável ou expressão
lista[n] Acessa um elemento específico de uma lista
lista[n:m] Acessar um intervalo de elementos de uma lista da posição n até a posição m – 1
for x in lista Acessa cada elemento de uma lista
if elemento in lista Verifica se um elemento está em uma lista
if elemento not in lista Verifica se um elemento não está em uma lista
len(lista) Retorna o tamanho de uma lista (quantidade de elementos)
append() Insere um elemento no final de uma lista
insert(n, elemento) Insere um elemento em uma posição n de uma lista
Ao usá-lo, os demais elementos de uma lista serão remanejados para frente, após o elemento novo inserido
remove(elemento) Remove um elemento específico de uma lista
Ao usá-lo, os demais elementos de uma lista serão remanejados, depois do elemento citado ser excluído
pop() Quando usada sem parâmetro, remove o último elemento de uma lista
pop(n) Remove um elemento em uma posição n de uma lista
Ao usá-lo, os demais elementos de uma lista serão remanejados, depois do elemento citado ser excluído
clear() Remove todos os itens de uma lista
copy() Copia uma lista para outra
+ Concatena listas

Tabela 1: revisão das funções, métodos, operadores e palavras-chave usada neste artigo.


Questões de concursos

[1] [Instituto AOCP 2020 MJ/SP – Analista de Governança de Dados – Big Data] Um analista do MJSP implementou o
seguinte programa em Python:

01 a = [1, 2, 3];
02 b = list(a);
03 print(a);
04 print(b);
05 print(a==b);
06 print(a is b);

Assinale a alternativa que apresenta corretamente o resultado do programa quando executado.

(A) A resposta do programa é:

[1, 2, 3]
[ ]
False
False

(B) A resposta do programa é:

[1, 2, 3]
[1, 2, 3]
True
True

(C) A resposta do programa é:

[1, 2, 3]
[1, 2, 3]
True
False

(D) A resposta do programa é:

[1, 2, 3]
[1, 2, 3]
True
Null

(E) O programa não executa por um erro na linha 02, em que é atribuído um tipo de dado diferente daquele definido na
variável b.

Comentários:

Comentando cada linha do código da questão:

a = [1, 2, 3]; # Criação da lista a.
b = list(a); # Criação da lista b a partir da lista a. 

print(a); # Será impresso [1, 2, 3]
print(b); # Será impresso [1, 2, 3]

# Verifica se listas possuem o mesmo conteúdo.
print(a == b); # Será impresso True

# Verifica se as listas são as mesmas, ou seja, se as duas variáveis apontam para a mesma lista.
print(a is b); # Será impresso False porque cada variável aponta para sua lista

O resultado da execução do código será:

[1, 2, 3]
[1, 2, 3]
True
False

Portando, letra C é nosso gabarito.

Gabarito: letra C.

[2] [Instituto AOCP 2020 MJ/SP – Cientista de Dados – Big Data] In Python, the statement ‘for loop’ is used for
iterating over a sequence. Considering that, choose the correct alternative that presents a proper example concerning
the use of ‘for loop’ in Python.

(A)

for x = ["John", "Sophie", "Junior"]:
    print(x)

(B)

array (["John"],["Sophie"],["Junior"])
for each i = 0 to array[i]
    print (array[i])

(C)

names = ["John", "Sophie", "Junior"]
for x in names:
    print(x)

(D)

names = {{"John"}, {"Sophie"}, {"Junior"}}
for x in names:
    print(names)

(E)

array.names("John", "Sophie", "Junior")
for x print(names[x]):
    end for:

Comentários:

Essa questão traz o conhecimento tanto do inglês quanto do uso de listas em Python.

Traduzindo: “Em Python, a instrução ‘for loop’ é usada para iterar em uma sequência. Considerando isso, escolha a
alternativa correta que apresenta um exemplo adequado sobre o uso de ‘for loop’ em Python”.

Como estudamos, utilizamos a estrutura de repetição for da seguinte forma para iterar elementos de uma lista em Python:

names = ["John", "Sophie", "Junior"]
for x in names:
    print(x)

O resultado da execução do código será:

John
Sophie
Junior

O código correto é da letra C.

Gabarito: letra C.

[3] [IFB 2017 IFB – Professor – Informática/Desenvolvimento de Sistemas] Dado o código em Python abaixo, assinale
a alternativa que contém a saída CORRETA gerada pelo “print”:

lista = ["cachorro", "hamster", ["pato", "galinha", "porco"], "gato"]
print(lista[3][2])

(A) galinha

(B) ga

(C) t

(D) gato

(E) to

Comentários:

Questão interessante que envolve o conhecimento de listas e strings em Python. Uma string funciona como uma lista de
elementos de caracteres:

x = "Python"
print(x[2]) # Será impresso t

Agora, sobre a questão, a lista citada possui quatro elementos:

Posição Valor Tipo
0 “cachorro” str
1 “hamster” str
2 [“pato”, “galinha”,
“porco”]
list
3 “gato” str

Com essa informação, podemos entender o que será retornado em lista[3][2]:

  • A primeira dimensão [3] trata da posição na lista:
    • Posição 3 da lista: “gato”;
  • A segunda dimensão [2] trata da posição da string “gato”:
    • Posição 2 da string: “t”.

Ou seja, a primeira dimensão retorna a string “gato”. A partir dessa string, pede-se a posição 2 (segunda dimensão).

Com isso, o gabarito é a letra C.

Gabarito: letra C.

[4] [FCC 2012 MPE/PE – Analista Ministerial – Informática] Em Python, os métodos de lista permitem utilizar
listas como pilhas, onde o item adicionado por último é o primeiro a ser recuperado. Para adicionar um item ao topo da
pilha, e para recuperar um item do topo da pilha utilizam-se, respectivamente os métodos:

(A) append() e pop().

(B) insert() e top().

(C) addTop() e pop().

(D) add() e get().

(E) addItem() e top().

Comentários:

O conceito de uma pilha é que adicionamos um elemento no topo da estrutura e retiramos do topo dela, ou seja, LIFO (Last
In, First Out).

Se pegarmos o caso de uma l ista em Python, podemos trabalhar ela, adicionando elementos no final da lista e retirando
os elementos no final dela. Isso seguindo o conceito LIFO. O final da lista poderia ser tratado como “topo” da lista.

Com base nessa revisão, a tabela 1 da parte teórica traz duas funções importantes que podem fazer com que a lista seja
tratada como uma pilha:

  • append():
    • Insere um elemento no final de uma lista; e
  • pop():
    • Quando usada sem parâmetro, remove o último elemento de uma lista.

Portanto, o gabarito é a letra A.

Gabarito: letra A.

[5] [CESPE 2018 Polícia Federal – Agente de Polícia Federal] Julgue o próximo item, relativo a noções de
programação Python e R.

Considere o programa a seguir, na linguagem Python.

letras == [“P”, “F”]
for x in letras
    {
    print(x)
    }

A sintaxe do programa está correta e, quando executado, ele apresentará o seguinte resultado.

PF

Comentários:

A sintaxe correta do código é:

letras = ["P", "F"]
for x in letras:
    print(x)

O resultado da execução do código:

P
F

Então, vejam que tanto o código corrigido quanto o resultado da execução diferem do código e resultado da execução
citados pela questão.

Concluindo: a sintaxe do programa não está correta e, portanto, o programa não será executado. O que deixa o gabarito
ERRADO.

Gabarito: ERRADO.


Referências

  • PensePython2e – Tradução do livro Pense em Python (2ª ed.), de Allen B. Downey. Disponível em:
    https://penseallen.github.io/PensePython2e/
  • Python. Disponível em: https://www.python.org/
  • Python e Orientação a Objetos. Disponível em: https://www.caelum.com.br/apostila-python-orientacao-a-objetos
  • Python Reference (The Right Way). Disponível em: https://python-reference.readthedocs.io/en/latest/
  • Python Tutorial. Disponível em: htps://www.w3schools.com/python/

Então é isso!
[]’s e até a próxima!
_________________________
Professor Rogerão Araújo

Avatar


12 de fevereiro8 min. de leitura