📜  Python|合并来自两个不同列表的相应子列表

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

Python|合并来自两个不同列表的相应子列表

给定两个包含子列表的列表,编写一个Python程序以基于相同的索引合并两个子列表。

例子:

Input : l1 = [['+', '-', '+'], ['-', '+'], ['+', '-', '+']]
        l2 = [['2a3', 'b2', '3c'], ['a3', 'b2'], ['a3', '2b2', '5c']]
Output : [['+2a3', '-b2', '+3c'], ['-a3', '+b2'], ['+a3', '-2b2', '+5c']]

Input : l1 = [['1', '2'], ['1', '2', '3']]
        l2 = [['anne', 'bob'], ['cara', 'drake', 'ezra']]
Output : [['1anne', '2bob'], ['1cara', '2drake', '3ezra']]

方法 #1:使用zip()进行列表理解
我们可以使用带有zip()函数的嵌套列表推导。 zip()函数采用迭代器,使迭代器根据传递的迭代器聚合元素,并返回一个元组迭代器。现在使用两个变量ij遍历压缩元组,它使用 '+' 运算符连接两个变量。

# Python3 code to Concatenate 
# corresponding sublists from two 
# different lists
  
def concatList(l1, l2):
    return [[i + j for i, j in zip(x, y)]
                 for x, y in zip(l1, l2)]
      
# Driver Code
l1 = [['1', '2'], ['1', '2', '3']]
l2 = [['anne', 'bob'], ['cara', 'drake', 'ezra']]
print(concatList(l1, l2))
输出:
[['1anne', '2bob'], ['1cara', '2drake', '3ezra']]


方法 #2:使用map()进行列表理解
我们可以使用带有运算符concat的函数map()来代替嵌套列表推导。我们使用变量ij遍历压缩的list1list2 。然后我们对ij应用 concat运算符来连接它们。

# Python3 code to Concatenate 
# corresponding sublists from two 
# different lists
from operator import concat
  
def concatList(l1, l2):
    return [list(map(concat, i, j)) for i, j in zip(l1, l2)]
      
# Driver Code
l1 = [['1', '2'], ['1', '2', '3']]
l2 = [['anne', 'bob'], ['cara', 'drake', 'ezra']]
print(concatList(l1, l2))
输出:
[['1anne', '2bob'], ['1cara', '2drake', '3ezra']]