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