怎么让 map(lambdax, y : (x**y,x+y),打印出来?

map(lambdax, y : (x**y,x+y),[2,4,6],[3,2,1])
 
# 结果如下
[(8,5),(16,6),(6,7)]

完整代码是?

直接print出来啊

a = map(lambda x, y : (x**y,x+y),[2,4,6],[3,2,1])
print(list(a))

我只会轮询

tem = []

for x,y in zip([2, 4, 6], [3, 2, 1]):
    tem.append((x**y, x+y))

print(tem)

解析式我也写成了zip()那种,老是报错“lambda函数缺少位置参数y”。我明明给了zip()打包的两个列表啊😱

print(list(map(lambda x,y: (x**y, x+y), zip([2, 4, 6], [3, 2, 1]))))

观摩过楼上问佬的代码,才明白被zip() 打包后的两个列表,变成了三个元组,lambda 每次只取倒一个元组对象,被x拿走,y豆没得值赋了啊。

所以啊lambda的值参数得直接用两个列表,每次从列表各取一个元素给x、y。

print(list(map(lambda x,y: (x**y, x+y), [2, 4, 6], [3, 2, 1])))

轮询和解析都可以了😁😁

img



def map(f,l1,l2):
    res = []
    for i int range(0, len(l1)):
       res.append(f(l1[i], l2[i]))
    return res