如何解压 Python 元组列表
Python 是一种在全球范围内用于各种目的的编程语言,例如 Web 开发、数据科学、机器学习以及执行许多不同的自动化流程。元组是 Python 的一个非常有用的特性,它有助于将来自多个数据集(如字典、列表等)的数据存储在一个层级上。在本文中,我们将学习有关可用于解压 Python 元组列表的不同方法。
解压 Python 元组列表的不同方法
列表推导式
列表推导式用于逐个检查列表中存在的每个元素。在这种方法中,我们将借助列表推导式来解压元组列表。让我们举个例子来更好地理解它。
示例
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)
输出
以上示例的输出如下所示
('Ahmedabad', 'Hyderabad', 'Silchar', 'Agartala', 'Namchi') ('Gujarat', 'Telangana', 'Assam', 'Tripura', 'Sikkim')
Itertools
Itertools 主要用于在循环中迭代数据中的元素。在存在大量包含大量数据的元组的情况下,此方法更可取。让我们举个例子来更好地理解它。
示例
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)
输出
以上示例的输出如下所示
('Ahmedabad', 'Hyderabad', 'Silchar', 'Agartala', 'Namchi') ('Gujarat', 'Telangana', 'Assam', 'Tripura', 'Sikkim')
循环方法
在 Python 中没有引入不同的特性时,使用过此方法。它是解压元组列表的最简单和最基本的方法之一。让我们举个例子来更好地理解它。
示例
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)
输出
以上示例的输出如下所示
('Ahmedabad', 'Hyderabad', 'Silchar', 'Agartala', 'Namchi') ('Gujarat', 'Telangana', 'Assam', 'Tripura', 'Sikkim')
Numpy
当元组列表包含不同的数值数据时,此特性主要很有用。在这种情况下,我们可以轻松地使用 numpy 的函数。让我们举个例子来更好地理解它。
示例
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)
输出
以上示例的输出如下所示
['Gujarat', 'Punjab', 'Assam', 'Tripura', 'Sikkim'] ['31', '237', '33', '14', '6']
Pandas 数据框
这是一种非常高级的解压数据方法,仅在需要对大量数据进行高精度处理的情况下使用。让我们举个例子来更好地理解它。
示例
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)
输出
以上示例的输出如下所示
('Ahmedabad', 'Hyderabad', 'Silchar', 'Agartala', 'Namchi') ('Gujarat', 'Telangana', 'Assam', 'Tripura', 'Sikkim')
运算符模块
我们将使用运算符模块的函数来解压元组列表。此方法也是一种复杂的方法,在极少数情况下使用。让我们举个例子来更好地理解它。
示例
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)
输出
以上示例的输出如下所示
[21, 32, 43, 24, 21]
结论
要成为一名高效的程序员,必须了解可用于解压元组列表的不同方法。可以根据便利性和应用领域使用不同的方法。本文中提到了所有可使用的方法。
广告