Python如何通过lambda和map配对两个列表

时间:2017-06-29 16:59:57

标签: python lambda

例如,我有以下两个列表

listA = ['one','two','three']    数组listB = [ '苹果', '樱桃', '西瓜']

如何使用maplambda将这两个列表配对以获得此输出?

one apple
two cherry
three watermelon

我知道如何通过列表理解来实现它,

[print(listA[i], listB[i]) for i in range(len(listA))]

但我找不到maplambda解决方案。有什么想法吗?

6 个答案:

答案 0 :(得分:6)

最简单的解决方案是简单地使用zip,如下所示:

>>> listA=['one', 'two' , 'three']
>>> listB=['apple','cherry','watermelon']
>>> list(zip(listA, listB))
[('one', 'apple'), ('two', 'cherry'), ('three', 'watermelon')]

我想可以使用map和lambdas,但这会使事情变得不必要,因为这是zip的理想情况。

答案 1 :(得分:5)

这是我根据你需要得到的东西(map和lambda),

输入:

listA=['one', 'two' , 'three']
listB=['apple','cherry','watermelon']
list(map(lambda x, y: x+ ' ' +y, listA, listB))

输出:

['one apple', 'two cherry', 'three watermelon']

答案 2 :(得分:3)

您可以使用下面的zip

for item in zip(list_1, list_2):
    print(item)

答案 3 :(得分:3)

让我们考虑有两个列表,例如 list1,list2。我们可以在列表或元组类型中将它们配对。

list1=['1', '2' , '3']
list2=['3','2','1']
output = list (map (  lambda x,y: [x,y], list1,list2    ))
print(output)

输出:

[['1', '3'], ['2', '2'], ['3', '1']]

答案 4 :(得分:1)

特别使用map和lambda作为问题......

list(map(lambda tup: ' '.join(list(tup)), zip(listA,listB)))

虽然我可能会打破它以使其更具可读性

zipped   = zip(listA,listB)
tup2str  = lambda tup: ' '.join(list(tup))
result   = list(map(tup2str, zipped))
# ['one apple', 'two cherry', 'three watermelon']

已编辑 - 根据以下评论,listCombined = list(zip(listA,listB))是一种浪费

答案 5 :(得分:0)

使用list comprehension和zip:

listA=['one', 'two' , 'three']

listB=['apple','cherry','watermelon']

new_list = [a+" "+b for a, b in zip(listA, listB)]

输出:

['one apple', 'two cherry', 'three watermelon']