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
Participe da conversa