我有这段代码:
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} }}。
它可能与我不理解的地图功能有关。
答案 0 :(得分:0)
我的猜测是这不再相关,但这是答案:lst
切片是可迭代对象,其元素将用作传递给 map
的函数的参数,以便构建新的可迭代结果。在这里,您将 [1]
和 [1]
配对,其元素在添加时产生 2
(您实际上并未添加列表,因此不需要 map
) .同样 list(map(lambda x,y:x+y,[1,2],[3,4]))
会产生 [4,6]