top of page
Foto do escritorAmanda Nascimento

Listas e tuplas em Python

Atualizado: 20 de nov.


As listas e tuplas são estruturas de dados que

nos permitem armazenar elementos de maneira ordenada e sequencial, mantendo a ordem dos elementos e oferecem índices para acessar esses valores.

As listas são ideais quando você precisa de uma coleção de elementos que pode ser modificada ao longo do tempo, são estruturas mutáveis, o que significa que é possível modificar seus elementos, adicionar novos itens ou remover existentes após a criação da lista, podendo inclusive utilizar funções próprias para isso como append(), remove(), pop(), e insert().

Já as tuplas são apropriadas quando se deseja garantir que os elementos não sejam alterados após a criação, são imutáveis. Uma vez que uma tupla é criada, seus elementos não podem ser alterados, adicionados ou removidos.

Devido à sua imutabilidade, as tuplas têm um desempenho melhor do que listas para algumas operações. Elas são mais eficientes em termos de espaço e processamento em determinados cenários.




🟤 TUPLAS


Uma tupla é uma estrutura de dados que pode armazenar múltiplos itens em uma única variável. Diferente das listas, as tuplas são imutáveis, o que significa que, uma vez criada, seus elementos não podem ser alterados, adicionados ou removidos. Tuplas são definidas usando parênteses () e os itens são separados por vírgulas.


Exemplo de uma tupla chamada friends:

friends = ('amanda', 'luisa', 'rafael')


Ou seja, a tupla é uma lista, só que imutável (não sofre alteração durante a execução do programa), e ao invés de utilizarmos os colchetes [ ], utilizaremos parênteses ( ).


Algumas características:


 🚩 Ordenadas: Os elementos têm uma ordem definida que não pode ser alterada.

 🚩 Permite duplicatas: Tuplas podem conter dados não homogêneos (heterogêneos), contendo múltiplos valores iguais.

 🚩 Diferente tipo de dados: Uma tupla pode conter strings, números, listas, etc.


Se tentarmos alterar o valor da tupla, Python resultará em erro pelo motivo que falamos acima, as tuplas não podem ser alteradas, uma vez criadas.


friends = ('amanda', 'luisa', 'rafael)

# minha_tupla[0] = 'jose' # Isso gerará um erro




🟤 LISTAS


Uma lista (armazenamento) é uma coleção ordenada de objetos, separados por vírgula e entre colchetes.

As listas podem ter elementos duplicados, podem ter em uma mesma lista nome, número, etc, porem, é recomendável que uma lista seja feita de dados homogêneos, ou seja, com elementos pertencentes a mesma categoria.

É possível editar, remover, incluir, ordenar, executar métodos (append, index, etc) de objetos de lista.


É importante ressaltar que Python considera que o primeiro elemento de uma lista esta na posição 0 e não na posição 1. O segundo elemento de uma lista, esta na posição 1 e assim por diante.


Para criar uma lista precisamos nomeá-la, neste exemplo minha lista se chamará "friends":



🚩 Lista vazia:


friends = [ ] # Lista chamada friends, e esta vazia, sem nenhum elemento entre o colchetes.



🚩 Lista com elementos:

friends = ['amanda', 'luisa', 'camila', 'roger', 'rafael']

🚩 Lista com elementos, e o comando para Python printar o elemento de número 1

friends = ['amanda', 'luisa', 'camila', 'roger', 'rafael']
print(friends[1])

A saída será luisa, pois o primeiro elemento de índice 0 é amanda, o segundo, luisa.

Para melhor entendimento os elementos das lista representadas pelo índice, ficaria assim:

friends = [0, 1, 2, 3, 4, 5]


🚩 Lista com elementos, e o comando para Python printar o último elemento da lista

friends = ['amanda', 'luisa', 'camila', 'roger', 'rafael']
print(friends[-1])

A saída será rafael pois o último elemento da lista será índice -1, o penúltimo, -2, e assim por diante.




Métodos em uma lista


Para manusear elementos da lista para incluir, excluir, etc, utilizamos os métodos em Python.

Método é uma função que pertence a um objeto específico e os métodos são chamados em objetos e podem acessar e modificar os elementos dentro do objeto que estão sendo chamados. Uma lista, existem alguns métodos como append, insert, remove, etc, esses métodos são específicos para objeto do tipo lista e podem ser chamados em qualquer instância dessa classe de objeto. Os métodos são semelhantes a funções, mas estão associados a um objeto.



✳️ insert e append (incluir dado em uma lista)


Podemos adicionar um elemento novo em qualquer posição com o método insert(). Para isso, você precisa especificar o índice do elemento novo e o valor(dado) dele.


No exemplo abaixo, nome da lista + . ponto para chamar o método + ( ) parênteses + índice que desejo adicionar + , + novo valor que quero adicionar na lista.

Ou seja, no script abaixo estou pedindo que Python adicione na primeira posição (0) na lista existente friends o nome 'alfredo'. Sempre que foi uma string utilizamos aspas duplas ou simples " " ou ' ' e sempre que tiver # inicial, significa que é um comentário no código e o que esta nesta linha, não será executado.


friends.insert(0, 'alfredo')


Para adicionar um elemento no final da lista, podemos utilizar o método .append()


lista = [1, 2, 3]

lista.append(4)


print(lista)

# Saída: [1, 2, 3, 4]


A diferença entre insert e append é que com o insert, você poderá adicionar um elemento em qualquer posição da lista, já o método append necessita apenas de um valor como argumento para inseri-lo no final da lista.



✳️ del, pop() e remove() (Excluir dados em uma lista)


Podemos remover um elemento de uma lista utilizando del, através do índice.


No exemplo abaixo, estou executando o comando para excluir o primeiro nome da lista (posição 0)


del friends[0]

O método pop remove o último item da lista se você não especificar qual o elemento que deseja excluir.


No exemplo abaixo, utilizei apenas .pop() sem especificar o item, por tanto. Python considera o último item da lista.



friends = ['amanda', 'luisa', 'camila', 'roger', 'rafael']

poped_friends = friends.pop()
print(friends)

A saída será: ['amanda', 'luisa', 'camila', 'roger']


Para especificar qual elemento desejo excluir, colocaria o índice dentro de parênteses, conforme exemplo abaixo:


friends = ['amanda', 'luisa', 'camila', 'roger', 'rafael']

poped_friends = friends.pop(2)
print(friends)

A saída será a lista completa, sem o nome da camila, que ocupa o índice 2 da lista.



Para remover um elemento de uma lista através do valor dele, utilizaremos o método remove


friends = ['amanda', 'luisa', 'camila', 'roger', 'rafael']

friends.remove('roger')
print(friends)

Obs: O método remove deleta apenas a primeira ocorrência do valor especificado. Se existirem valores duplicados na lista, é necessário usar um loop.



✳️ Ordenamento de uma lista


Método sort() altera permanentemente para ordem alfabética os elementos da lista:


friends.sort()


Para utilizar a ordem alfabética reversa:


friends.sort(reverse=True)



Caso você não queira alterar permanentemente os elementos de uma lista, mas apenas printar em ordem ordenada, podemos utilizar a função sorted().


print(sorted(friends))



✳️Exibir uma lista em ordem reversa


friends.reverse()


Como resultado, o primeiro item da lista passa a ser rafael.

O método reverse() altera permanentemente a ordem de uma lista, mas podemos reverter para a ordem original a qualquer momento aplicando reverse() à mesma lista na segunda vez.



✳️ Tamanho de uma lista


Utilizamos a função len para contar quantos elementos existem em uma determinada lista.

len(friends)



Principais métodos utilizados em listas:


Nome do Método

Descrição

append()

Adiciona um elemento ao final da lista.

clear()

Remove todos os elementos da lista.

copy()

Retorna uma cópia superficial da lista.

count()

Retorna o número de ocorrências de um determinado elemento na lista.

extend()

Adiciona os elementos de uma lista (ou qualquer iterável) ao final da lista.

index()

Retorna o índice do primeiro elemento com o valor especificado.

insert()

Adiciona um elemento em uma posição específica da lista.

pop()

Remove e retorna o elemento na posição especificada (ou o último elemento, se não houver índice especificado).

remove()

Remove a primeira ocorrência do elemento com o valor especificado.

reverse()

Inverte a ordem dos elementos na lista.

sort()

Ordena os elementos da lista em ordem crescente por padrão (ou de acordo com uma função de comparação opcional).

len()

Retorna o número de elementos na lista.

max()

Retorna o elemento com o valor máximo na lista.

min()

Retorna o elemento com o valor mínimo na lista.

join()

Concatena todos os elementos de uma lista em uma única string, usando um separador especificado.

del

Remove um elemento em uma posição ou fatia específica da lista.

slice()

Retorna uma parte da lista, especificando um intervalo de índices.




Loop para percorrer uma lista


Os loops possibilitam que executemos a mesma ação ou várias ações, com todos os itens da lista, sendo assim, é um facilitador para trabalharmos com listas com milhares de dados.

Quando queremos percorrer todos os elementos de uma lista, executamos a mesma tarefa para cada item de uma lista.


Exemplo:


friends = ['amanda', 'luisa', 'pedro', 'gabriel']

for friend in friends:
    print(friends)

a saída será:

['amanda', 'luisa', 'pedro', 'gabriel']

['amanda', 'luisa', 'pedro', 'gabriel']

['amanda', 'luisa', 'pedro', 'gabriel']

['amanda', 'luisa', 'pedro', 'gabriel']


Pois para cada elemento da lista, python executa o comando print.




Função range


A função range() é bastante útil para gerar uma série de números


for valor in range(1, 6):

print(valor)


A saída será os números começando em 1 e terminando em 5.


1

2

3

4

5



Para criar uma lista de números com range utilizaremos também a função list(), chamamos isso de wrapper, a saída será uma lista de números.


numeros = list(range(1, 6))

print(numeros)


A saída será uma lista contendo números de 1 a 5.


[1, 2, 3, 4, 5]



Podemos utilizar a função range para informar ao Python que desconsidere algum intervalo.


Por exemplo o primeiro argumento em range estou solicitando a Python que inicie a contagem em 1, que percorra até o item 12, e de 2 em 2 casas. Chamamos isso de step ou intervalo numérico.


numeros = list(range(1, 12, 2))
print(numeros)

saída: [1, 3, 5, 7, 9, 11]




Dicionário dentro de uma lista



A utilização de dicionários dentro de uma lista em Python oferece várias vantagens,

especialmente quando você trabalha com coleções de dados estruturados e heterogêneos.

É uma forma poderosa e prática de organizar dados estruturados e trabalhar com eles de maneira eficiente!


No exemplo abaixo, dentro de uma única lista [ ], contem diversos (3) dicionários:



Acessar um dicionário específico na lista:

Use o índice da lista para acessar o dicionário correspondente.

print(restaurantes[0])  # {'nome': 'Praça', 'categoria': 'Japonesa', 'ativo': False}

Acessar um valor específico de um dicionário:

Após acessar o dicionário, use a chave para obter o valor.

print(restaurantes[0]['nome'])  # 'Praça'
print(restaurantes[1]['ativo'])  # True

Filtrar restaurantes ativos:

Use uma compreensão de lista para selecionar apenas os restaurantes com 'ativo': True.

ativos = [r for r in restaurantes if r['ativo']]
print(ativos)
# [{'nome': 'Pizza Suprema', 'categoria': 'Pizza', 'ativo': True}]

Atualizar um valor em um dicionário:

Modifique diretamente os valores usando índices e chaves.

restaurantes[2]['ativo'] = True
print(restaurantes[2])  
# {'nome': 'Cantina', 'categoria': 'Italiano', 'ativo': True}


Vantagens em utilizar dicionários em uma lista


✔ Organização e Estruturação de Dados

Cada dicionário pode representar um item ou entidade com várias propriedades (chave-valor).

Isso permite que você organize dados complexos de maneira mais compreensível.


clientes = [
    {"nome": "João", "idade": 30, "cidade": "São Paulo"},
    {"nome": "Maria", "idade": 25, "cidade": "Rio de Janeiro"},
    {"nome": "Carlos", "idade": 35, "cidade": "Belo Horizonte"}
]

Aqui, cada cliente é representado como um dicionário, e todos eles são armazenados em uma lista.


✔ Flexibilidade para Trabalhar com Dados Heterogêneos


Como os dicionários podem armazenar diferentes tipos de valores (strings, números, listas, etc.), é fácil representar dados variados.

estoque = [
    {"produto": "Cadeira", "quantidade": 10, "cores": ["preto", "azul"]},
    {"produto": "Mesa", "quantidade": 5, "cores": ["marrom"]},
]

✔ Acesso Fácil a Propriedades Específicas

É simples acessar as propriedades específicas de um item com base nas chaves do dicionário.

for cliente in clientes:
    print(cliente["nome"])  # Acessa o nome de cada cliente

✔ Facilidade de Filtragem e Pesquisa

É fácil realizar pesquisas e filtros na lista com base nos valores das chaves do dicionário.


# Filtrar clientes com idade maior que 30
clientes_mais_velhos = [c for c in clientes if c["idade"] > 30]


Escalabilidade

Essa estrutura é escalonável para um número maior de itens e atributos, especialmente em situações onde os atributos podem variar entre os itens.


# Adicionando um novo cliente com mais propriedades
clientes.append({"nome": "Ana", "idade": 28, "cidade": "Curitiba", "vip": True})


Compatibilidade com JSON

Dicionários dentro de listas são uma estrutura muito semelhante ao formato JSON, amplamente utilizada para troca de dados em APIs e serviços web.


import json
print(json.dumps(clientes, indent=4))  # Converte a lista de dicionários para JSON formatado


Processamento e Manipulação Simplificada

É fácil realizar operações como agrupamento, atualização de valores e adição de novos itens diretamente nos dicionários.


# Atualizar a cidade de João
for cliente in clientes:
    if cliente["nome"] == "João":
        cliente["cidade"] = "Campinas"



bottom of page