最小值itertools.产品在python中

2024-05-28 19:49:19 发布

您现在位置:Python中文网/ 问答频道 /正文

import itertools

A = [50, 60, 70]
B = [0.3, 0.1, 0.5, 0.4]

print [a + b for a, b in itertools.product(A, B)]

>> [50.3,50.1,50.5,50.4,60.3,60.1,60.5,60.4,70.3,70.1,70.5,70.4]

在上面的代码中,有没有一种方法只返回每个a的a+b的最小值?所以输出应该是:

[50.1,60.1,70.1]

请注意,这是一个玩具的例子,在真实的例子中,a和B是lat和lon值的列表,我计算它们之间的大圆距离


Tags: 方法代码inimport距离列表forproduct
2条回答

是的,首先选择B的最小值,然后将其添加到A的每个元素中

b = min(B)
print([a + b for a in A])

itertools.product实际上不适合您的大圆任务,因为它将所有(A,B)对集中到一个容器中,但是您希望将具有给定值的所有对放在一个子容器中,以便可以找到它们的最小值。所以只需要使用一对嵌套循环。如果需要,可以将其作为生成器表达式来计算嵌套在列表中的最小值,如下所示:

A = [50, 60, 70]
B = [0.3, 0.1, 0.5, 0.4]

f = lambda x, y: x + y

print [min(f(a,b) for b in B) for a in A]

相关问题 更多 >

    热门问题