据我所知,分给我最小的项目,如果我用一个列表或一组号码蟒蛇分函数有两个迭代arugments
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
没有地图想帮我又适用分钟到L1和L2?和我种的期待:
1
2
据我所知,分给我最小的项目,如果我用一个列表或一组号码蟒蛇分函数有两个迭代arugments
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
没有地图想帮我又适用分钟到L1和L2?和我种的期待:
1
2
如果希望每个几个名单的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]))
类似(除了它是可迭代的,不是元组)。
基本上,正如@PatrickHaugh所说,就好像他的代码是'map(min,zip(L1,L2))'。 –
明白了!谢谢! –
@ChristianDean:在这种情况下,它是;但情况并非如此。它的工作原理是因为'min'恰好要么计算单个迭代(如果给定一个参数)的最小值或者它的所有参数的最小值(如果给定多个参数)。 – rici
如果你的名单
L1 = [1, 28, 36]
L2 = [2, 57, 9]
然后
map(min, L1, L2)
将应用min()
功能的L1
的相应的元素,L2
:
min(1, 2) # result: 1
min(28, 57) # result: 28
min(36, 9) # result: 9
(但将做到这一点只有在有评价它请求(所谓一懒评价) - 为你的情况for
循环 - 这样就不会返回列表[1, 28, 9]
,但map
对象。
的map
对象是排序迭代的 - 这是作为一个配方怎么办呢。
为什么?由于列表可能非常非常长,但配方仍然是相同的 - 在短之一)
非常感谢,它的确如同拉链(L1,L2) –
你是对的 - 它是* like * zip()'内置函数,但它不会执行'zip()'* as一个临时结果(产生对),但它直接产生映射函数*的返回值。 – MarianD
阅读['map'](文档https://docs.python.org/ 3 /库/ functions.html#地图)。你基本上正在做'map(min,zip(L1,L2))' –
像这样的'map(min,[L1,L2])'在* L1 *和* L2 *周围加括号。 –