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()
函数采用迭代器,使迭代器根据传递的迭代器聚合元素,并返回一个元组迭代器。现在使用两个变量i和j遍历压缩元组,它使用 '+' 运算符连接两个变量。
# 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()来代替嵌套列表推导。我们使用变量i和j遍历压缩的list1和list2 。然后我们对i和j应用 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']]