鉴于 [1,2,3,4,5]
,我该怎么办呢
1/1, 1/2, 1/3,1/4,1/5, ...., 3/1,3/2,3/3,3/4,3/5,.... 5/1,5/2,5/3,5/4,5/5
我想存储所有结果,找到最小值,并返回用于找到最小值的两个数字 . 所以在我上面描述的情况下,我想返回 (1,5)
.
所以基本上我想做点什么
对于列表中的每个元素 i
,列表中的所有元素都有一些函数,将 i
和 j
作为参数将结果存储在主列表中,在主列表中找到最小值,并返回用于计算的参数 i
, j
这个最小值 .
在我真正的问题中,我有一个列表对象/坐标,我正在使用的函数采用两个坐标并计算欧氏距离 . 我试图找到任意两点之间的最小欧氏距离,但我不需要花哨的算法 .
7 回答
如果您不介意导入numpy包,它内置了许多方便的功能 . 使用它们的数据结构可能比列表列表等更有效 .
您可以使用list comprehensions和min()(Python 3.0代码)执行此操作:
请注意,要在Python 2.5上运行它,您需要将其中一个参数设置为float,或者执行
from __future__ import division
以使1/5正确等于0.2而不是0 .一些可读的python:
如果有什么不清楚,请告诉我 .
如果使用Python≥2.6(包括3.x),您可以:
编辑:现在我想到它,如果我正确地记住我的数学,这也应该给出答案,假设所有数字都是非负的:
如果我认为您想要从列表中找到所有可能的2个元素对的函数的最小值,那是正确的...
这样做的方式......
当然,除非你在那里有负面影响 . 在这种情况下,这将不起作用,因为你实际上想要最小和最大绝对值 - 分子应该接近于零,并且分母在任何方向上都远离它 . 而双重否定将打破它 .