我无法弄清楚为什么这个地图功能正在产生它产生的输出。代码如下:
L1 = [1, 28, 36]
L2 = [2, 57, 9]
print map(min, L1, L2)
输出是: [1,28,9]
我理解它从第一个列表中取出了最小值,但为什么不从第二个列表中取出2,而是取了9.感谢任何反馈,谢谢。
答案 0 :(得分:6)
结果由
组成[min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2])]
所以在每对值上调用min
来构造新列表
答案 1 :(得分:3)
[min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2])]
大致意味着:
map(min, [L1, L2])
因此[1,2]的最小值(每个列表的第一个元素)为1,[28,57]的最小值为28,[36,9]的最小值为9。
您可能想要{{1}}。
答案 2 :(得分:1)
声明:
map(min, L1, L2)
将两个列表的每个元素与相同的索引进行比较。
因此,
它执行:
list = []
list.append(min(1,2)) #1
list.append(min(28,57)) #28
list.append(min(36,9)) #9
print list
导致输出[1, 28, 9]
答案 3 :(得分:1)
让我们来看看the document:
map(function, iterable, ...)
返回一个迭代器,它将函数应用于每个iterable项, 产生结果。如果传递了其他可迭代参数, 函数必须采用那么多参数并应用于项目 来自所有迭代并行。 ...
此处,并行表示来自不同iterable
的相同索引的项目会传递给每个索引的function
。