📜  Python|解压缩元组列表

📅  最后修改于: 2022-05-13 01:54:58.107000             🧑  作者: Mango

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)]