Como descompactar uma lista de tuplas Python
Python é uma linguagem de programação usada mundialmente para diversos fins, como desenvolvimento web, ciência de dados, aprendizado de máquina e para realizar diversos processos com automação. Tupla é um recurso muito útil do python que ajuda a armazenar dados de vários conjuntos de dados, como dicionário, lista, etc., juntos em um nível. Neste artigo, aprendemos sobre os diferentes métodos que podem ser usados para descompactar uma lista de tuplas python.
Diferentes métodos para descompactar uma lista de tuplas Python
Compreensão de lista
A compreensão da lista é usada para verificar cada elemento presente na lista, um por um. Neste método, com a ajuda da compreensão de lista, descompactaremos uma lista de tuplas. Vamos dar um exemplo para entender melhor:
Exemplo
Places = [('Ahmedabad', 'Gujarat'), ('Hyderabad', 'Telangana'), ('Silchar', 'Assam'), ('Agartala', 'Tripura'), ('Namchi', 'Sikkim')] # The input of tuples is given
City, States = zip(*Places) # The zip function of list comprehension separate the data into different cities and states
print(City)
print(States)
Saída
A saída do exemplo acima será a seguinte:
('Ahmedabad', 'Hyderabad', 'Silchar', 'Agartala', 'Namchi')
('Gujarat', 'Telangana', 'Assam', 'Tripura', 'Sikkim')
Itertools
Itertools é usado principalmente para iterar elementos nos dados em loops. Este método é mais preferível em casos onde há um grande número de tuplas com muitos dados. Vamos dar um exemplo para entender melhor:
Exemplo
from itertools import zip_longest # Do not forget to import itertools or else error might occur
Places = [('Ahmedabad', 'Gujarat'), ('Hyderabad', 'Telangana'), ('Silchar', 'Assam'), ('Agartala', 'Tripura'), ('Namchi', 'Sikkim')] # The input of tuples is given
City, State = zip_longest(*Places) # We use zip_longest so that the tuples which are not same in length can also be unzipped
City = [City for City in City if City is not None] # The different lists formed might consist of `none` value for missing element
State = [State for State in State if State is not None] # The list comprehension to maintain the same length and remove the none values
print(City)
print(State)
Saída
A saída do exemplo acima será a seguinte:
('Ahmedabad', 'Hyderabad', 'Silchar', 'Agartala', 'Namchi')
('Gujarat', 'Telangana', 'Assam', 'Tripura', 'Sikkim')
Método de loop
Este método foi usado quando recursos diferentes não foram introduzidos em python. É um dos métodos mais simples e básicos para descompactar a lista de tuplas. Vamos dar um exemplo para entender melhor:
Exemplo
Places = [('Ahmedabad', 'Gujarat'), ('Hyderabad', 'Telangana'), ('Silchar', 'Assam'), ('Agartala', 'Tripura'), ('Namchi', 'Sikkim')] # The input of tuples is given
Cities = []
States = []
for City, State in Places: # We check each value in the list and then extract the different city and state element
Cities.append(City)
States.append(State)
print(Cities)
print(States)
Saída
A saída do exemplo acima é a seguinte:
('Ahmedabad', 'Hyderabad', 'Silchar', 'Agartala', 'Namchi')
('Gujarat', 'Telangana', 'Assam', 'Tripura', 'Sikkim')
Entorpecido
Este recurso é útil principalmente quando a lista de tuplas contém dados numéricos diferentes. Podemos facilmente usar a função numpy em tal situação. Vamos dar um exemplo para entender melhor:
Exemplo
import numpy as np # DO not forget to import numpy or else error might occur
Places = [('Gujarat', 31), ('Punjab', 237), ('Assam', 33), ('Tripura', 14), ('Sikkim', 6)] # The input of tuples is given
States, number_of_cities = np.array(Places).T.tolist() # We will use array operation to unzip the data
#np.array will help us convert the tuple into array and .T will help us to unzip and separate the data and tolist will convert into list
print(States)
print(number_of_cities)
Saída
A saída do exemplo acima será a seguinte:
['Gujarat', 'Punjab', 'Assam', 'Tripura', 'Sikkim']
['31', '237', '33', '14', '6']
Quadro de dados do Panda
Este é um método muito avançado para descompactar os dados e usado apenas nos casos em que é necessária alta precisão em uma grande quantidade de dados. Vamos dar um exemplo para entender melhor:
Exemplo
import pandas as pd # Do not forget to import pandas data frame or else error might occur
Places = [('Ahmedabad', 'Gujarat'), ('Hyderabad', 'Telangana'), ('Silchar', 'Assam'), ('Agartala', 'Tripura'), ('Namchi', 'Sikkim')] # The input of tuples is given
df = pd.DataFrame(Places, columns=['City', 'State']) # The list is first converted into pandas data frame with the help of pd.dataframe which help us to have access to elements separately
Cities = df['City'].tolist() #tolist will help to convert these dataframes back into standard lists
States = df['State'].tolist()
print(Cities)
print(States)
Saída
A saída do exemplo acima será a seguinte:
('Ahmedabad', 'Hyderabad', 'Silchar', 'Agartala', 'Namchi')
('Gujarat', 'Telangana', 'Assam', 'Tripura', 'Sikkim')
Módulo Operador
Usaremos as funções do módulo operador para descompactar uma lista de tuplas. Este método também é complexo e usado em casos raros. Vamos dar um exemplo para entender melhor:
Exemplo
from operator import itemgetter # Do not forget to import operator module or else error might occur
Places = [('Ahmedabad', 21), ('Hyderabad', 32), ('Silchar', 43), ('Agartala', 24), ('Namchi', 21)] # The input of tuples is given
Cities, people = map(list, zip(*map(itemgetter(0), Places))), map(itemgetter(1), Places)
people = list(people)# itemgetter 0 & 1 will used to get the city and state element respectively and the map function helps them to find the elements in the places list and with the help of zip we will unzip the list
print(people)
Saída
A saída do exemplo acima será a seguinte:
[21, 32, 43, 24, 21]
Conclusão
Para se tornar um programador eficiente, é necessário ter conhecimento sobre os diferentes métodos que podem ser usados para descompactar uma lista de tuplas. Métodos diferentes podem ser usados conforme conveniência e campo de aplicação. Todos os diferentes métodos que podem ser usados são mencionados no artigo acima