Programa
O método pop() é uma função importante do Python usada na manipulação de dados para remover e retornar um elemento específico de uma lista ou dicionário. Programadores em Python preferem o pop() porque é uma forma especialmente simples de modificar estruturas de dados como listas e dicionários.
Antes de entrar nos detalhes, recomendo muito o curso Introduction to Python da DataCamp para aprender o básico da linguagem. O Python Cheat Sheet for Beginners também ajuda a consultar e entender a sintaxe e as diferentes funções do Python.
Resposta rápida: como usar o método pop() no Python
O método pop() é usado em listas e dicionários para remover itens específicos e retornar o valor. Vou mostrar um exemplo rápido para ambos. O primeiro exemplo mostra como remover um item de uma lista usando pop(). O código a seguir imprime 5.
# Create a list
my_list = [1, 2, 3, 4, 5]
# Removes and returns the last element of the list
last_element = my_list.pop()
print(last_element)
O próximo exemplo mostra como usar pop() para remover uma chave específica de um dicionário. O código a seguir imprime 3.
# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}
# Removes and returns the value associated with the key 'b'
value = my_dict.pop('c')
print(value)
Usando pop() com listas
O método pop() é usado com listas para remover e retornar o elemento especificado dessa lista. A sintaxe do pop() com listas é mostrada abaixo.
list.pop([index])
Ao usar pop() com listas, saiba que ele pode receber um parâmetro opcional para indicar o índice a ser removido. Se nenhum parâmetro for informado, pop() remove e retorna o último elemento da lista.
Se, em vez disso, você optar por especificar o índice explicitamente, atenção: se fizer isso de forma incorreta, será lançado um IndexError se o índice estiver fora do intervalo. Vamos ver abaixo os diferentes casos de uso de pop() com listas.
Usando pop() para remover elemento pelo índice
Você também pode usar um índice positivo ou negativo como argumento em pop() para indicar o elemento a remover da lista. Em Python, índices positivos começam em 0 no início da lista. Índices negativos começam em -1 no final da lista.
Os exemplos a seguir mostram três formas de remover elementos de uma lista. Em todos os casos, a saída do código será 5.
# Create a list
my_list = [1, 2, 3, 4, 5]
# Removes and returns the last element of the list
last_element = my_list.pop()
print(last_element)
# Create a list
my_list = [1, 2, 3, 4, 5]
# Remove specific element using negative index
removed_element = my_list.pop(-1)
print(removed_element)
# Create a list
my_list = [1, 2, 3, 4, 5]
# Remove specific element using negative index
removed_element = my_list.pop(4)
print(removed_element)
Usando pop() para remover itens de uma lista enquanto itera
Você pode usar pop() em um loop para iterar pela lista e remover o último item a cada vez até a lista ficar vazia. O exemplo abaixo mostra como usar pop() em loops. O código vai imprimir List is now empty.
# Create a list
my_list = [1, 2, 3, 4, 5]
# Create a function to remove items from the list
while my_list:
element = my_list.pop()
print(f"Removed element: {element}")
print("List is now empty:", my_list)
Essa técnica pode ser útil em vários cenários. Imagine, por exemplo, que você tem uma lista de tarefas para resolver uma a uma. Usando pop(), você remove cada tarefa conforme for concluída, mantendo sua lista focada no que ainda falta.
Usando pop() com listas aninhadas
Você pode usar pop() para remover elementos de listas aninhadas. Esse método vai remover e retornar a lista especificada dentro da lista aninhada. O código a seguir imprime [7, 8, 9].
# Define a nested list
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# Pop an element from the outer list
removed_list = nested_list.pop()
print(removed_list)
Se quiser remover um elemento específico da lista interna, primeiro indique o índice da lista na estrutura aninhada. O código abaixo imprime 9, que é o último elemento da lista no índice 2.
# Define a nested list
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# Pop an element from an inner list
removed_element = nested_list[2].pop()
print(removed_element)
Tratando pop() com índice fora do intervalo
Quando você tenta remover um elemento de uma lista com um índice fora do intervalo daquela lista, um IndexError é lançado. Para evitar esse erro, é importante primeiro verificar o tamanho da lista e depois informar um índice válido. Você também pode usar um bloco try-except para capturar o erro. O código abaixo imprime Index out of range nos dois casos.
# Create a list
my_list = [1, 2, 3]
# Check length before popping
index = 4
# Ensure the index is within the valid range of the list
if 0 <= index < len(my_list):
# Removes and returns the element at the specified index
element = my_list.pop(index)
print(f"Popped element: {element}")
else:
print("Index out of range")
# Create a list
my_list = [1, 2, 3]
# Using try-except block to handle out-of-range index
try:
# Attempt to remove and return the element at index 5
element = my_list.pop(5)
except IndexError:
# Catches the IndexError if the index is out of range
print("Index out of range")
Usando pop() com dicionários
O método pop() é usado com dicionários para remover uma chave especificada e retornar seu valor. A sintaxe do pop() com dicionários é mostrada abaixo.
dict.pop(key[, default])
Percebemos que pop(), quando usado com dicionário, requer uma chave como parâmetro. O método retorna o valor associado à chave especificada e remove o par chave-valor do dicionário.
Você também pode informar um valor padrão opcional para retornar se a chave não for encontrada. Se a chave especificada não existir e nenhum valor padrão for fornecido, um KeyError é lançado. Se um valor padrão for informado, ele é retornado no lugar.
Valor padrão em dicionários Python
Ao usar pop() com dicionários, você pode fornecer um valor padrão para retornar caso a chave não seja encontrada. Isso geralmente é usado para evitar o KeyError. O código abaixo imprime Not Found porque a chave d não está na coleção.
# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}
# Remove a specific key and provide default value
value = my_dict.pop('d', 'Not Found')
# Prints the returned value
print(value)
Usando pop() com dicionários aninhados
Assim como em listas, você pode usar pop() para remover elementos em dicionários aninhados. Dicionários aninhados são dicionários dentro de dicionários. O código a seguir imprime {'x': 7, 'y': 8, 'z': 9}.
# Define a nested dictionary
nested_dict = {
'a': {'x': 1, 'y': 2, 'z': 3},
'b': {'x': 4, 'y': 5, 'z': 6},
'c': {'x': 7, 'y': 8, 'z': 9}
}
# Pop a key-value pair from the outer dictionary
removed_dict = nested_dict.pop('c')
print(removed_dict)
Você também pode remover um valor interno de um dicionário específico dentro da estrutura aninhada informando sua chave. O código abaixo imprime 2.
# Define a nested dictionary
nested_dict = {
'a': {'x': 1, 'y': 2, 'z': 3},
'b': {'x': 4, 'y': 5, 'z': 6},
'c': {'x': 7, 'y': 8, 'z': 9}
}
# Pop a key-value pair from an inner dictionary
popped_inner_value = nested_dict['a'].pop('y')
print(popped_inner_value)
Tratando KeyError em dicionários Python
Outra forma comum de tratar o KeyError de maneira mais elegante é usar um bloco try-except para capturar o erro. O exemplo a seguir mostra como usar a técnica try-except com o método pop().
# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}
# Create the try-except block to catch the error
try:
value = my_dict.pop('d')
except KeyError:
print("Key not found")
Você também pode usar a palavra-chave in para verificar se uma chave específica existe em um dicionário antes de removê-la. O código abaixo usa esse método e retorna Key not found.
# Create a dictionary
my_dict = {'a': 1, 'b': 2}
# Check key existence before popping
key = 'c'
if key in my_dict:
value = my_dict.pop(key)
print(f"Popped value: {value}")
else:
print("Key not found.")
Considerações de performance
Nesta seção, vamos analisar as implicações de performance ao usar pop() com listas e dicionários.
Operações em listas
A complexidade de tempo das operações pop() em listas depende do índice do elemento removido. Quando você usa pop() sem argumento ou com -1 para remover o último elemento, a operação é O(1) porque apenas remove o último elemento da lista, sem alterar os demais.
Quando usamos pop() para remover o primeiro ou qualquer outro elemento, a operação é O(n) porque envolve a remoção de um elemento e o deslocamento dos demais para novos índices. Confira nosso tutorial Analyzing Complexity of Code through Python para saber mais sobre complexidade de tempo em Python.
Operações em dicionários
O método pop() em dicionários é altamente eficiente devido à implementação da tabela hash subjacente. Nesse cenário, pop() em dicionários é geralmente uma operação O(1).
Essa complexidade ocorre porque o dicionário armazena as chaves em uma tabela hash e requer algum tempo para inserções, exclusões e buscas. Também vale lembrar que você sempre deve especificar a chave a ser removida de um dicionário ao usar pop(). Veja nosso tutorial A Guide to Python Hashmaps para aprender mais sobre tabelas hash.
Alternativas ao método pop() do Python
Embora pop() seja eficaz para remover elementos de listas e dicionários, existem algumas alternativas.
Usando a palavra-chave del
A palavra-chave del é usada para remover um item de uma lista informando o índice do elemento. Ela também pode remover pares chave-valor específicos de dicionários. Vale notar que del não retorna o elemento removido, ao contrário de pop().
Os exemplos abaixo mostram como usar del para remover elementos de uma lista e de um dicionário. Após remover o elemento no índice 2, o código imprime a nova lista [1, 2, 4, 5].
# Initialize a list with integers from 1 to 5
my_list = [1, 2, 3, 4, 5]
# Remove item at index 2
del my_list[2]
print(my_list)
O código a seguir imprime {'a': 1, 'c': 3}.
# Create a dictionary
my_dict = {'a': 1, 'b': 2, 'c': 3}
# Remove the key 'b' and its associated value from the dictionary
del my_dict['b']
print(my_dict)
Usando o método remove()
O método remove() se aplica apenas a listas quando você quer remover um elemento pelo valor exato, e não pelo índice. Esse método remove a primeira ocorrência do elemento especificado se ele aparecer mais de uma vez na lista. O código abaixo imprime [1, 3, 4, 5].
# Initialize a list with integers from 1 to 5
my_list = [1, 2, 3, 4, 5]
# Remove the element with the value 2 from the list
my_list.remove(2)
print(my_list)
Conclusão
O método pop() é um recurso particularmente simples e versátil no Python para remover elementos de listas e dicionários, com várias aplicações práticas na programação. Ele é especialmente importante ao lidar com listas e dicionários porque retorna o elemento removido, que muitas vezes é exatamente o comportamento desejado.
Como analista de dados, recomendo conferir as trilhas de habilidades Python Fundamentals e Python Programming da DataCamp para melhorar suas habilidades em Python para análise de dados. Também indico nossa trilha de carreira Data Analyst with Python para você continuar desenvolvendo competências práticas e alinhadas ao mercado.
Perguntas frequentes
O que o método pop() faz?
O método pop() remove e retorna um elemento de listas ou dicionários.
O que é IndexError no método pop()?
Um IndexError ocorre quando você tenta remover um elemento com um índice fora do intervalo.
Quais são as alternativas ao método pop()?
Os métodos alternativos para remover elementos de listas ou dicionários são o remove() e a palavra-chave del.
Qual é a diferença entre os métodos pop() e remove()?
O pop() remove e retorna o elemento especificado pelo índice em uma lista ou dicionário. Já remove() tira um elemento de uma lista pelo seu valor e não retorna esse valor.
Qual é a complexidade de tempo do método pop()?
A complexidade de tempo padrão de pop() é O(1), constante e eficiente.
O método pop() pode ser aplicado a outras estruturas de dados além de listas e dicionários no Python?
Sim, o método pop() também pode ser aplicado a sets e bytearrays em Python. Em sets, set.pop() remove e retorna um elemento arbitrário, já que conjuntos não têm ordem. Em bytearrays, bytearray.pop(index) remove e retorna o elemento no índice especificado, de forma semelhante ao funcionamento em listas.


