我有一个点列表,我必须找到每对点之间的距离。因此,创建一个找到距离的函数在这里并不重要,但要创建一个循环或函数来检查是否已计算每对之间的距离。
列表中的每个项目下方都代表对应点的ID。
l = [a, b, c, d, e, f]
我想创建一个函数来检查每对之间的距离是否已经计算过,如果不是,那么它用函数计算距离说: distance_method(a,b)
并将值存储在数据框中:
point1 point2 distance
a b some_val
a c some_val
注意:距离(a,b)=距离(b,a)
答案 0 :(得分:3)
您想要itertools
模块
>>> import itertools
>>> lst = ['a', 'b', 'c', 'd']
# get pairs from this list, such that you will get things like
# ('b', 'd') but not the reverse ('d', 'b')
>>> list(itertools.combinations(lst, 2))
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]
所以我认为你会想做类似的事情(伪代码跟随):
for pair in itertools.combinations(lst, 2):
if not in_dataframe(pair):
add_to_dataframe(pair)