📜  如何在Python中压缩两个列表列表?

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

如何在Python中压缩两个列表列表?

普通的 zip函数允许我们聚合容器中的值。但有时,我们需要有多个列表并包含列表作为索引元素,我们需要将它们合并/压缩在一起。这是一个非常罕见的问题,但它的解决方案仍然很方便。让我们讨论可以设计解决方案的某些方法。

方法 #1:使用map() + __add__
这个问题可以使用带有加法运算的map函数来解决。 map函数执行与 zip函数类似的函数,在这种情况下可以帮助找到解决方案。

# Python3 code to demonstrate 
# zipping lists of lists 
# using map() + __add__
  
# initializing lists
test_list1 = [[1, 3], [4, 5], [5, 6]]
test_list2 = [[7, 9], [3, 2], [3, 10]]
  
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
  
# using map() + __add__
# zipping lists of lists 
res = list(map(list.__add__, test_list1, test_list2))
      
# printing result 
print ("The modified zipped list is : " +  str(res))

输出 :

The original list 1 is : [[1, 3], [4, 5], [5, 6]]
The original list 2 is : [[7, 9], [3, 2], [3, 10]]
The modified zipped list is : [[1, 3, 7, 9], [4, 5, 3, 2], [5, 6, 3, 10]]


方法 #2:使用itertools.chain() + zip()
这两个功能的组合可用于执行此特定任务。可以使用chain函数进行interlist聚合,intralist聚合是通过zip函数完成的。

# Python3 code to demonstrate 
# zipping lists of lists 
# using map() + __add__
import itertools
  
# initializing lists
test_list1 = [[1, 3], [4, 5], [5, 6]]
test_list2 = [[7, 9], [3, 2], [3, 10]]
  
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
  
# using map() + __add__
# zipping lists of lists 
res = [list(itertools.chain(*i)) 
       for i in zip(test_list1, test_list2)]
      
# printing result 
print ("The modified zipped list is : " +  str(res))

输出 :

The original list 1 is : [[1, 3], [4, 5], [5, 6]]
The original list 2 is : [[7, 9], [3, 2], [3, 10]]
The modified zipped list is : [[1, 3, 7, 9], [4, 5, 3, 2], [5, 6, 3, 10]]