我在弄清楚为什么这个map函数会产生它正在产生的输出时遇到了困难。 代码如下:
L1 = [1, 28, 36]
L2 = [2, 57, 9]
print map(min, L1, L2)
输出是: [1, 28, 9]
我理解它从第一个列表中取出了最小值,但为什么它没有从第二个列表中取出2,而是取出了9。感谢任何反馈,谢谢。
我在弄清楚为什么这个map函数会产生它正在产生的输出时遇到了困难。 代码如下:
L1 = [1, 28, 36]
L2 = [2, 57, 9]
print map(min, L1, L2)
输出是: [1, 28, 9]
我理解它从第一个列表中取出了最小值,但为什么它没有从第二个列表中取出2,而是取出了9。感谢任何反馈,谢谢。
[min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2])]
因此,对每一对值调用min
来构建新列表。
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])
代替。
让我们来看一下文档:
map(function, iterable, ...)
返回一个迭代器,将函数应用于可迭代对象的每个项目,产生结果。如果传递了其他可迭代参数,则函数必须获取相同数量的参数,并且将从所有可迭代对象并行地应用于项。...
这里,并行地表示来自不同iterable
的相同索引项会针对每个索引传递给function
。
这个语句:
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]
。
[1, 2]
作为结果吗?如果不是,你需要什么? - John La Rooy