Python map函数与min参数和两个列表

5

我在弄清楚为什么这个map函数会产生它正在产生的输出时遇到了困难。 代码如下:

    L1 = [1, 28, 36]
    L2 = [2, 57, 9]
    print map(min, L1, L2)

输出是: [1, 28, 9]

我理解它从第一个列表中取出了最小值,但为什么它没有从第二个列表中取出2,而是取出了9。感谢任何反馈,谢谢。


1
你的意思是希望得到 [1, 2] 作为结果吗?如果不是,你需要什么? - John La Rooy
4个回答

8
结果由以下内容组成
[min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2])]

因此,对每一对值调用min来构建新列表。


4

map(min, L1, L2) 大致意思如下:

[min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2])]

因此,[1,2]的最小值(每个列表的第一个元素)为1,[28,57]的最小值为28,[36,9]的最小值为9。

你可能想要使用map(min, [L1, L2])代替。


1

让我们来看一下文档

map(function, iterable, ...)

返回一个迭代器,将函数应用于可迭代对象的每个项目,产生结果。如果传递了其他可迭代参数,则函数必须获取相同数量的参数,并且将从所有可迭代对象并行地应用于项。...

这里,并行地表示来自不同iterable的相同索引项会针对每个索引传递给function


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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接