Python|解压缩元组列表
压缩技术,即从两个不同的列表中分配一个键值或配对,之前已经在许多文章中介绍过,有时我们有特定的实用程序来执行反向任务。这个任务可以通过各种方法来完成。
让我们讨论一些解压缩元组列表的方法。
方法#1:使用列表理解
使用列表推导是执行此解压缩任务的最天真的方法,通常不用于执行此任务,但这是一个很好的开始方法。
# Python3 code to demonstrate
# Unzip a list of tuples
# using list comprehension
# initializing list of tuples
test_list = [('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]
# Printing original list
print ("Original list is : " + str(test_list))
# using list comprehension to
# perform Unzipping
res = [[ i for i, j in test_list ],
[ j for i, j in test_list ]]
# Printing modified list
print ("Modified list is : " + str(res))
输出 :
Original list is : [('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]
Modified list is : [['Akshat', 'Bro', 'is', 'Placed'], [1, 2, 3, 4]]
方法 #2:使用zip()
和 *运算符
主要用于执行解压缩和大多数 Pythonic 的方法,也推荐使用。这种方法一般被各地的程序员用来执行这个任务。 *运算符将元组解压缩成独立的列表。
# Python3 code to demonstrate
# Unzip a list of tuples
# using zip() and * operator
# initializing list of tuples
test_list = [('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]
# Printing original list
print ("Original list is : " + str(test_list))
# using zip() and * operator to
# perform Unzipping
res = list(zip(*test_list))
# Printing modified list
print ("Modified list is : " + str(res))
输出 :
Original list is : [('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]
Modified list is : [('Akshat', 'Bro', 'is', 'Placed'), (1, 2, 3, 4)]
方法 #3:使用map()
这是可以用来执行解压缩任务的另一种方式,这种方式鲜为人知,但确实是实现此任务的一种方法。这也使用 *运算符来执行列表的基本解包。此函数在Python >= 3 版本中已弃用。
# Python code to demonstrate
# Unzip a list of tuples
# using map()
# initializing list of tuples
test_list = [('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]
# Printing original list
print ("Original list is : " + str(test_list))
# using map() to
# perform Unzipping
res = map(None, *test_list)
# Printing modified list
print ("Modified list is : " + str(res))
输出 :
Original list is : [('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]
Modified list is : [('Akshat', 'Bro', 'is', 'Placed'), (1, 2, 3, 4)]