Python list: armazenando itens em uma única variável!

O Python list é uma das estruturas de dados disponíveis em Python que permite o armazenamento de uma coleção de dados e o processamento sequencial de seus elementos, que podem ser de diferentes tipos, como strings, números, objetos e até mesmo outra lista.

As listas são fáceis de utilizar e podem ser úteis em diversos tipos de aplicações, como para o desenvolvimento de jogos, em que é necessário armazenar os passos realizados pela pessoa jogadora e retorná-los na sequência inversa, por exemplo. Para demonstrar como as listas funcionam, preparamos este post com os seguintes tópicos:

Continue com a gente e boa leitura!

O que é Python list?

Em Python, list é uma estrutura de dados utilizada para armazenar elementos de forma sequencial e ordenada. As listas são acessadas por meio de um índice que inicia com o valor 0 para o primeiro elemento e é incrementada com 1 a cada novo item. Além disso, o último item da lista é representado pelo índice “–1”.

Em Python, a lista é um tipo de dado mutável. Isso significa que elas podem ser modificadas, ou seja, é possível sobrescrever os valores atribuídos a ela. Isso não é possível com tipos de dados imutáveis, como as strings e as tuplas. Por sua característica mutável, é preciso atenção ao manipular os dados de uma lista para evitar a perda de informações.   

Como criar uma lista em Python?

Uma lista em Python é delimitada pelos sinais de colchetes: “[“ e “]” e todos os elementos pertencentes a ela são separados por vírgulas. Os valores armazenados em uma lista podem ser modificados e duplicados, o que significa que podemos ter itens com o mesmo valor.

Existem diferentes formas de criar uma lista em Python. Ela pode ser declarada vazia, por exemplo, e ter seus elementos adicionados depois ou eles já podem ser atribuídos a ela no momento de sua criação. Veja alguns códigos de exemplo com essas e outras possibilidades.

Criar uma lista vazia

No código fonte abaixo, criamos uma lista vazia. Perceba que, ao exibirmos o resultado na tela, o retorno corresponde apenas aos sinais de colchetes de abertura e fechamento, o que indica que não existe nenhum item incluído.

lista_nomes = []

print(lista_nomes)
#Resultado: []

print(type(lista_nomes))
#resultado: <class 'list'>

Criar uma lista com elementos do mesmo tipo

Podemos criar uma lista com itens do mesmo tipo de dados. No código abaixo, criamos uma lista de números do tipo inteiro.

lista_numeros = [10, 20, 30, 40]

print(lista_numeros)
#resultado: [10, 20, 30, 40]

print(type(lista_numeros[0]))
#resultado:<class 'int'>

Criar uma lista com elementos de tipos diferentes

No exemplo a seguir, perceba que criamos uma lista com vários elementos com tipos de dados diferentes, pois temos algumas strings e valores numéricos inteiros.

lista_nomes = ['João', 20, 'Sueli', 25, 'Paulo', 'Maria']

print(lista_nomes)
#resultado: ['João', 20, 'Sueli', 25, 'Paulo', 'Maria']

print(type(lista_nomes[0]))
#resultado: <class 'str'>

print(type(lista_nomes[1]))
#resultado: <class 'int'>

Criar uma lista que contém outra lista

Já no exemplo abaixo, criamos uma lista de pessoas estudantes, que contém outra lista para representar as notas do bimestre. Veja como ela foi declarada:

estudantes_notas = ['João', [8, 9, 10, 7], 'Sueli', [7, 9, 10, 8]]

print(estudantes_notas)
#Resultado: ['João', [8, 9, 10, 7], 'Sueli', [7, 9, 10, 8]]

print(type(estudantes_notas))
#Resultado: <class 'list'>
 

Criar uma lista com a função list()

Também é possível criar listas por meio da função list(). Veja alguns exemplos:

lista_numeros = list(range(0,10))

print(lista_numeros)
#Resultado: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(type(lista_numeros))
#Resultado: <class 'list'>

No código acima, criamos uma lista com valores inteiros e sequenciais com a função range(). Também podemos transformar uma string em lista por meio do método list()Python list to string. Veja a seguir:

lista_string = list('Python')

print(lista_string)
#Resultado: ['P', 'y', 't', 'h', 'o', 'n']

print(type(lista_string))
#Resultado: <class 'list'>

Quais são as funções/operadores de uma lista?

A lista em Python é muito flexível. Isso significa que podemos realizar diversas ações com ela, como dividi-la, concatená-la, verificar o seu tamanho e muito mais. Confira as principais funções disponíveis na linguagem para manipular essa estrutura de dados.

Descubra o tamanho da lista: len()

Podemos descobrir o tamanho de uma lista por meio da função len() Python list length. Na prática, ela recebe o nome atribuído à variável do tipo lista como parâmetro e retorna a quantidade de elementos existentes. Veja um exemplo:

lista_nomes = ['João', 20, 'Sueli', 25, 'Paulo', 'Maria']

print(len(lista_nomes))
#Resultado: 6

Verificando se há itens específicos em uma lista: in

Também podemos verificar se existe um determinado elemento na lista. Para isso, utilizamos o operador in, que percorre todos os itens e retorna “True” se encontrar uma equivalência e “False”, se não existir o valor. Veja o algoritmo a seguir:

lista_nomes = ['João', 20, 'Sueli', 25, 'Paulo', 'Maria']

existe = 'Sueli' in lista_nomes

print(existe)
#Resultado: True

nao_existe = 'José' in lista_nomes

print(nao_existe)
#Resultado: False

Concatenando e multiplicando listas: + e *

Usamos o operador “+” (que representa a concatenação)para juntar duas ou mais listas. No código abaixo, criamos a “lista_pessoas” por meio da concatenação da “lista_homens” e “lista_mulheres”.

lista_homens = ['José', 'Pedro', 'Paulo', 'João']
lista_mulheres = ['Maria', 'Cláudia', 'Márcia', 'Joana']
lista_pessoas = lista_homens + lista_mulheres

print(lista_pessoas)
#Resultado: ['José', 'Pedro', 'Paulo', 'João', 'Maria', 'Cláudia', 'Márcia', 'Joana']

Outra operação possível é a de multiplicação, representada pelo operador “*”. Na prática, a mesma lista é criada a quantidade de vezes definida na operação. Veja o código abaixo:

lista_nomes = ['João', 20, 'Sueli', 25]
lista_triplicada = lista_nomes * 3

print(lista_triplicada)
#Resultado: ['João', 20, 'Sueli', 25, 'João', 20, 'Sueli', 25, 'João', 20, 'Sueli', 25]

Descubra o máximo, o mínimo e a soma da lista: min(), max() e sum()

A linguagem Python oferece as funções min(), max() e sum(), que podem ser utilizadas em listas formadas por valores numéricos e retornam respectivamente: o menor valor, o maior e a somatória dos itens da lista. Veja um exemplo prático:

numeros = [2, 4, 6, 8, 10]

print(min(numeros))
#Resultado: 2

print(max(numeros))
#Resultado: 10

print(sum(numeros))
#Resultado: 30

Conheça os Métodos da lista!

Como mencionamos, as listas são um tipo de estrutura de dados. Na prática, seus elementos são organizados de forma sequencial e identificados por um índice, o que proporciona mais agilidade na manipulação dos dados. Existem diversos métodos — Python list methods — disponíveis na linguagem para facilitar essa tarefa. Confira os principais a seguir.

Adicione um elemento ao final da lista: append()

É importante lembrar que a lista é um tipo mutável, portanto, qualquer alteração é refletida na própria variável. Podemos, por exemplo, adicionar um elemento ao final da lista. Para isso, devemos utilizar o método append()Python list append. Veja um exemplo:

lista_nomes = ['Maria', 'João', 'Paulo', 'Cláudia']
lista_nomes.append("Pedro")

print(lista_nomes)
#Resultado: ['Maria', 'João', 'Paulo', 'Cláudia', 'Pedro']

Adicione um elemento em uma posição específica na lista: insert()

Também podemos inserir um elemento em uma determinada posição da lista. Para isso, devemos utilizar ao método insert(), que recebe dois parâmetros: o índice desejado e o item que será inserido. Veja um exemplo:

lista_nomes = ['Maria', 'João', 'Paulo', 'Cláudia']
lista_nomes.insert(1,"Pedro")

print(lista_nomes)
#Resultado: ['Maria', 'Pedro', 'João', 'Paulo', 'Cláudia']

Perceba que o item “Pedro” foi inserido na segunda posição da lista, que corresponde ao índice 1, pois a indexação é iniciada a partir da posição 0.

Removendo um item da lista e retornando-o como resultado: pop()

Por padrão, o método pop() remove o último item da lista e retorna o valor correspondente. Veja um exemplo:

lista_nomes = ['Maria', 'João', 'Paulo', 'Cláudia']
nome = lista_nomes.pop()

print(nome)
#Resultado: Cláudia

print(lista_nomes)
#Resultado: ['Maria', 'João', 'Paulo']

O método pop() também remove um elemento da lista de acordo com o índice informado. No exemplo a seguir, indicamos o índice 1 para ser removido. Veja o resultado da depuração do código:

lista_nomes = ['Maria', 'João', 'Paulo', 'Cláudia']
nome = lista_nomes.pop(1)

print(nome)
#Resultado: João

print(lista_nomes)
#Resultado: ['Maria', 'Paulo', 'Cláudia']

Removendo um item específico da lista: remove(item)

Nem sempre sabemos qual é o índice de um elemento. Por isso, também podemos removê-lo com a sua própria descrição. Vale ressaltar que esse método não retorna nenhum valor. Veja o código a seguir:

lista_nomes = ['Maria', 'João', 'Paulo', 'Cláudia']
lista_nomes.remove("João")

print(lista_nomes)
#Resultado: ['Maria', 'Paulo', 'Cláudia']

É importante dizer que o método remove() retorna um erro de execução se o item a ser removido não existir na lista. Uma forma de evitar a interrupção do programa é fazer o tratamento do erro com as instruções try..except, que tenta executar uma instrução e permite o tratamento ao encontrar uma falha. Veja um exemplo:

lista_nomes = ['Maria', 'João', 'Paulo', 'Cláudia']

try:
    lista_nomes.remove("José")
except ValueError:
    print("Item não existe")

#Resultado: Item não existe

Ordenando a lista: Python sort

Outro método muito útil é o sort() — Python sort list — que organiza os elementos da lista de maneira ordenada. Por padrão, os itens são organizados de forma crescente, ou seja, se for um conjunto de dados numéricos, a organização será do menor para o maior. Em caso de strings, a ordem padrão utilizada será a alfabética.

Entretanto, o método sort() contém dois parâmetros opcionais que podem ser usados para modificar essa condição. Veja a sintaxe:

list.sort(reverse=True|False, key=myFunc)

Em que:

  • reverse: é opcional e indica o sentido de organização da lista. O valor padrão é “False”, que representa a ordem crescente ou ascendente;
  • key: é opcional e pode ser representado por uma função (myFunc).

Se definirmos o parâmetro reverse = True, teremos a organização da lista no sentido decrescente. Também podemos utilizar uma função para definir o critério de classificação. Veja o exemplo abaixo:

def sort_idade(e):
    return e['idade']

lista_pessoas = [{'nome': 'Maria','idade': 23}, {'nome': 'João', 'idade': 19},
                 {'nome': 'Paulo', 'idade': 32}, {'nome': 'Cláudia', 'idade': 20}]
lista_pessoas.sort(key=sort_idade)

print(lista_pessoas)
'''
Resultado: ordem crescente por idade 
[{'nome': 'João', 'idade': 19}, {'nome': 'Cláudia', 'idade': 20}, 
{'nome': 'Maria', 'idade': 23}, {'nome': 'Paulo', 'idade': 32}]
'''

lista_pessoas.sort(reverse = True, key=sort_idade)

print(lista_pessoas)
'''
Resultado: ordem descrescente por idade
[{'nome': 'Paulo', 'idade': 32}, {'nome': 'Maria', 'idade': 23}, 
{'nome': 'Cláudia', 'idade': 20}, {'nome': 'João', 'idade': 19}]
'''

No código acima, temos a variável “lista_pessoas”. Ela é formada por uma lista de dicionários, que é um tipo de dados formado pelo conjunto chave/valor. Também criamos a função sort_idade() para indicar que o critério de ordenação será por idade. Por fim, utilizamos o método sort() e informamos que a função sort_idade() será usada como chave de classificação.

Também utilizamos o método sort() com o parâmetro reverse igual a “True” para demonstrar como será o resultado invertido.

Invertendo as posições das string: reverse()

Outra forma de organizar uma lista de forma reversa, é por meio da função reverse(). Vale ressaltar que ela não retorna nenhum valor e modifica a ordem dos elementos da lista. Veja o código de exemplo:

lista_nomes = ['Maria', 'João', 'Paulo', 'Cláudia']
lista_nomes.reverse()

print(lista_nomes)
#Resultado: ['Cláudia', 'Paulo', 'João', 'Maria']
 
numeros = [2, 4, 6, 8, 10]
numeros.reverse()

print(numeros)
#Resultado: [10, 8, 6, 4, 2]

Contando o número de ocorrências de um objeto em uma lista: count()

O método Python list count é utilizado para retornar o número de ocorrências de um determinado elemento em uma lista. Veja o exemplo:

lista_nomes = ['Maria', 'João', 'Maria', 'Paulo', 'Maria', 'Cláudia']
total = lista_nomes.count('Maria')

print(total)
#Resultado: 3

É importante dizer que podemos contar apenas um elemento por vez, ou seja, não podemos, por exemplo, descobrir quantas ocorrências de ‘Maria’ e ‘João’ há no exemplo acima. Se quiséssemos essa informação, seria preciso utilizar a função count() para cada um deles.

Entretanto, existe uma forma de obter essa resposta caso seja necessário conhecer a ocorrência de todos os elementos da lista. Podemos utilizar o módulo collections, pois ele contém um método chamado Counter(), que retorna essas informações em forma de dicionário. Veja o código abaixo:

import collections
 
lista_nomes = ['Maria', 'João', 'Maria', 'Paulo', 'João', 'Maria', 'Cláudia']
ocorrencias = collections.Counter(lista_nomes)

print(ocorrencias)
#Resultado: Counter({'Maria': 3, 'João': 2, 'Paulo': 1, 'Cláudia': 1})

O Python list é um dos tipos de estrutura de dados utilizado na linguagem para organizar um conjunto de elementos de forma sequencial e ordenada. Trata-se de um recurso poderoso, que pode ser aplicado em diferentes tipos de aplicações. Além disso, ele contém uma série de métodos para facilitar ainda mais a manipulação dos dados.

Gostou do nosso conteúdo sobre as listas em Python? Então, confira o que é desenvolvimento web e saiba como ingressar nessa área!