如何检查一对的每个组合?

时间:2017-06-05 01:36:05

标签: python function pandas dataframe

我有一个点列表,我必须找到每对点之间的距离。因此,创建一个找到距离的函数在这里并不重要,要创建一个循环或函数来检查是否已计算每对之间的距离。

列表中的每个项目下方都代表对应点的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)

1 个答案:

答案 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)