python的map如何使用多个参数

时间:2018-01-28 17:26:19

标签: python built-in

我有这段代码:

def funky_fun(lst):
    tmp = list(map(lambda x,y: x+y, lst[1:], lst[:-1]))
    print('check:', tmp, lst[1:] + lst[:-1])
    return [lst[0]] + tmp + [lst[-1]]

print(funky_fun(funky_fun([1])))

此处funky_fun([1])返回[1, 1],而第二次调用(funky_fun([1, 1])则返回[1, 2, 1]

你明白为什么吗?由于lsr[1:][1]lst[:-1]也为[1],因此我认为它会打印[1, 1, 1, 1],但tmp为{{1} }}。 它可能与我不理解的地图功能有关。

1 个答案:

答案 0 :(得分:0)

我的猜测是这不再相关,但这是答案:lst 切片是可迭代对象,其元素将用作传递给 map 的函数的参数,以便构建新的可迭代结果。在这里,您将 [1][1] 配对,其元素在添加时产生 2(您实际上并未添加列表,因此不需要 map) .同样 list(map(lambda x,y:x+y,[1,2],[3,4])) 会产生 [4,6]