【问题标题】:How to check every combination of a pair? [closed]如何检查一对的每个组合? [关闭]
【发布时间】:2017-06-05 01:36:05
【问题描述】:

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

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

【问题讨论】:

  • 请添加您尝试过的代码以及您的代码有什么问题。在 StackOverflow 上,您不应该要求其他人为您编写代码。

标签: python function pandas dataframe


【解决方案1】:

你会想要 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多