rect = [(2,4),(3,5),(4,3),(5,5),(6,2),(3,9)]
areas=[]
def area(r):
for i in rect:
a = i[0]
b = i[1]
c = a*b
areas.append(c)
return c
area(rect)
print(areas)
以上功能运行良好。
它打印-[8, 15, 12, 25, 12, 27]
但是当我使用Map时:
print(list(map(area, rect))
它打印-[27, 27, 27, 27, 27]
如何使用Map函数正确获得以上结果?
答案 0 :(得分:0)
地图在area
列表中的每个元素上调用rect
,因此
map(area, rect)
将导致:
[area(rect[0]),area(rect[1]),area(rect[2]),... ] = [27,27,...]
在python中,最好使用列表理解:
out = [a*b for a,b in rect]