让我说我有一个像l = [1,3,4,5,6,8]的数组
其中n th 元素表示n th 和n + 1 th 对象之间的距离。
我想找到任意两个对象之间的距离,我使用此代码:
def dis(l_list, index1, index2, mylist):
m = mylist.index(index1)
n = mylist.index(index2)
i=0
j=0
if n > m:
while n >= m:
i = i + mylist[m]
m = m + 1
elif n < m:
while n <= m:
i = i + mylist[n]
n = n + 1
else:
return(0)
j = mylist[n] % l_mylist
print(abs(i - j))
l_mylist = input()
l_mylist = int(l_mylist)
mylist = []
mylist = list(map(int, input().split()))
i,j = input().split()
i, j=int(i), int(j)
dis(l_mylist, i, j, mylist)
但我仍然得到错误的输出。任何人都可以指出我错在哪里吗?
答案 0 :(得分:1)
如果你想总结一个潜在的循环列表。您可以使用collections.deque()
来旋转列表,例如:
from collections import deque
def dist(l, i1, i2):
d = deque(l)
d.rotate(-i1)
return sum(list(d)[:i2-i1]))
In []:
l = [1,2,3,4,5,6,7,8]
dist(l, 3-1, 6-1) # 3, 4, 5
Out[]:
12
In []:
dist(l, 6-1, 3-1) # 6, 7, 8, 1, 2
Out[]:
24
答案 1 :(得分:0)
def distance(first_index, second_index, my_list):
temp_list = my_list + my_list
if (first_index > second_index):
first_index += len(my_list)
requested_sum = sum(my_list[second_index-1:first_index-1])
else:
requested_sum = sum(my_list[first_index-1:second_index-1])
return requested_sum
如果我理解正确,那么这应该可以解决问题。
有更多紧凑而有效的方法可以做到这一点,但在我看来,这是最简单和最容易理解的。