python 具有两个可迭代参数的最小函数
python min function with two iterable arugments
我知道如果我使用列表或一组数字,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
map 不是应该帮我把 min 依次应用到 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]))
(除了它是一个可迭代的,而不是一个元组)。
如果您的列表是
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
在你的情况下循环 - 所以它不会 return 一个 list [1, 28, 9]
,而是一个 map
对象。
map
对象是一种 迭代器 - 类似于 如何做到这一点的方法。
为什么?因为 lists 可能 非常非常长 ,但配方仍然是相同的 - short。 )
我知道如果我使用列表或一组数字,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
map 不是应该帮我把 min 依次应用到 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]))
(除了它是一个可迭代的,而不是一个元组)。
如果您的列表是
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
在你的情况下循环 - 所以它不会 return 一个 list [1, 28, 9]
,而是一个 map
对象。
map
对象是一种 迭代器 - 类似于 如何做到这一点的方法。
为什么?因为 lists 可能 非常非常长 ,但配方仍然是相同的 - short。 )