2024-06-16 16:21:36 发布
网友
假设我有这样一个清单:
my_list = [A, B, C, D, E, F, G]
事实上,我用我的列表就像一个循环。这意味着在G之后有{},而在{}之前,有{}。在
G
我想知道,例如,B和{}之间的最短距离是多少。在
B
显然,答案是3,因为F -> G -> A -> B比^{短。在
3
F -> G -> A -> B
什么是更“Python式”的计算这种距离的方法?
到目前为止,我觉得很难看(假设我知道索引):
由于您将列表视为循环,因此可以使用模运算来查找这两个距离。在
您只需要计算第一个索引减去第二个索引(对列表的长度进行模数),第二个索引减去第一个索引(对列表的长度进行模数)。最短路径是这两个值中的最小值。在
在Python代码中,保持变量名:
def distance(len_my_list, idx_1, idx_2): i = (idx_1 - idx_2) % len_my_list j = (idx_2 - idx_1) % len_my_list return min(i, j)
例如,i是3,j是4。因此函数返回3。在
i
j
接受的答案依赖于模返回与除数符号相同的答案。这在Python中是正确的,但不是所有的语言。(参见:https://en.wikipedia.org/wiki/Modulo_operation#In_programming_languages)
以下代码不太特定于语言:
def distance(len_my_list, idx_1, idx_2): dist = abs(idx_1 - idx_2) return min(len_my_list - dist, dist)
由于您将列表视为循环,因此可以使用模运算来查找这两个距离。在
您只需要计算第一个索引减去第二个索引(对列表的长度进行模数),第二个索引减去第一个索引(对列表的长度进行模数)。最短路径是这两个值中的最小值。在
在Python代码中,保持变量名:
例如,
i
是3,j
是4。因此函数返回3。在接受的答案依赖于模返回与除数符号相同的答案。这在Python中是正确的,但不是所有的语言。(参见:https://en.wikipedia.org/wiki/Modulo_operation#In_programming_languages)
以下代码不太特定于语言:
相关问题 更多 >
编程相关推荐