首页 > 解决方案 > 使用接受两个参数的 lambda 函数映射

问题描述

我想从列表列表中的所有子列表中获取第 i 个元素。我尝试使用 map 和 lambda 函数,如下所示

extract = lambda x,i :x[i]
a = [[1,2,3],[4,5,6],[6,7,8]]
b = list(map(extract(i = 1),a))

我希望 b 是 [2,5,7] 但我知道最后一行不起作用。我应该如何使用 map 和 lambda 来解决这个问题

标签: pythondictionarylambda

解决方案


您可以硬编码1

extract = lambda x: x[1]
a = [[1,2,3],[4,5,6],[6,7,8]]
b = list(map(extract,a))

print(b)
# [2, 5, 7]

您通常不想将 a 存储lambda到变量中,这更好:

def extract(x):
    return x[1]

b = list(map(extract, a))

或者简单地说:

b = list(map(lambda x: x[1], a))

您还可以使用列表推导,我个人认为这是最好的选择:

c = [x[1] for x in a]

print(b == c)
True

推荐阅读