python min函数有两个可迭代的句子

时间:2017-10-18 01:42:29

标签: python dictionary min

据我所知,如果我使用一个列表或一组数字,min会给我最小的项目

min([5, 10])] >>> 5
min((5, 10)) >>> 5

但是当它在地图中使用时:

L1 = [1, 28, 36]
L2 = [2, 57, 9]
for elt in map(min, L1, L2):
    print(elt)
它让我回来了:

1
28
9

是不是映射假设帮助我依次将min应用于L1和L2?我有点期待:

1
2

2 个答案:

答案 0 :(得分:4)

如果你想要几个列表中的每一个的min,你需要创建一个列表(或可迭代的)列表来交映:

for elt in map(min, (L1, L2)):
    print(elt)

这会调用min(L1)然后调用min(L2)

map可以使用任意数量的可迭代参数;它汇集了迭代的所有相应元素,并将它们全部传递给提供的函数。所以map(min, L1, L2)类似于(min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2]))(除了它是可迭代的,而不是元组)。

答案 1 :(得分:0)

如果您的列表是

L1 = [1, 28, 36]
L2 = [2, 57, 9]

然后

map(min, L1, L2)

会将min()函数应用于L1L2对应元素

min( 1,  2)       # result:  1
min(28, 57)       # result: 28
min(36,  9)       # result:  9

(但只有在有请求进行评估时才会这样做(所谓的延迟评估) - 作为你的for循环case - 所以它不会返回列表 [1, 28, 9],而是 map 对象。

map对象是迭代器的一种 - 作为配方的一种方法

为什么呢?因为列表可能非常长,但配方仍然相同 - 一个。)