在Python中查找循环列表中点之间的前向距离

时间:2018-07-21 07:03:19

标签: python loops combinations

我将使用的示例圆形列表为[0, 1, 2, 3, 4, 5, 6, 7],类似于一个棋盘游戏中的正方形,其中正方形0跟随正方形7。我试图通过仅移动,以找到任意两点之间的距离。向前的方向,而不是最小距离。例如,0和7之间的距离为7,但是7和0之间的距离为1。7和7之间的距离为0,依此类推。我尝试使用迭代器中的周期生成器,但由于我不了解如何解决此问题,因此无法提出解决方案。非常感谢您的帮助,非常感谢:)!

4 个答案:

答案 0 :(得分:1)

尝试这样的事情...

numbers = [0, 1, 2, 3, 4, 5, 6, 7]

def fxn(point_a, point_b):
    count = 0
    position = numbers.index(point_a)
    while numbers[position] != point_b:
        if position + 1 == len(numbers):
            position = 0
            count += 1
        else:
            position += 1
            count += 1
    return count

答案 1 :(得分:1)

可以尝试基于索引的内容-

def dist(ind1, ind2):
    if ind1 > ind2:
        return len(x[ind1:]) + len(x[:ind2])
    else:
        return len(x[ind1:ind2])

ind1ind2是您的两个索引

答案 2 :(得分:1)

您还可以使用短而明快的模运算来循环返回索引。

l =  [0, 1, 2, 3, 4, 5, 6, 7]
def cal_dist(p1, p2):
    ct = 0
    n = len(l)
    pos = l.index(p1)
    while l[pos] != p2:
        pos = (pos+1)%n
        ct=ct+1
    return ct

继续提问,保持成长:)

答案 3 :(得分:1)

>>> lst = [0, 1, 2, 3, 4, 5, 6, 7]
>>> def find_dst(l, a, b):
...     d = l.index(b) - l.index(a)
...     return d if d>=0 else len(l)+d
... 
>>> find_dst(lst, 2, 4)
2
>>> find_dst(lst, 4, 2)
6
>>>