如何计算包含 3 个子列表的 2 个列表之间的曼哈顿距离
How to calculate Manhatten distance between 2 lists containing 3 sublists
我正在尝试计算曼哈顿距离 '[[0,1,2],[3,4,5],[6,7,8]]。目标是让它最终成为 [[1, 2, 3], [4, 5, 6], [7, 8, 0]]。但我不确定该怎么做。我试过这样做:
def manhattan_distance(self):
dist = 0
for i in range(len(self.board)):
dist += abs(self.board[i] - self.DEFAULT_BOARD[i])
return dist
self.board = [[0,1,2],[3,4,5],[6,7,8]]
self.DEFAULT_BOARD = [[1, 2, 3], [4, 5, 6], [7, 8, 0]]
目前这是我的一个想法,可能会解决问题,但不会。我尝试在整个互联网上搜索我可以使用或学习的解决方案,但找不到
考虑这种方法:
import math
import itertools
def distance(a, b):
"""distance between two lists of numbers of same length"""
return math.sqrt(sum([a1**2 + b1**2 for a1, b1 in zip(a, b)]))
def taxi_dist(a, b):
"""takes two lists of lists"""
dist = 0
for el_a, el_b in itertools.izip_longest(a, b):
dist += distance(el_a, el_b)
return dist
if __name__ == "__main__":
print(taxi_dist([[0,1,2],[3,4,5],[6,7,8]],[[1,2,3],[4,5,6],[7,8,0]]))
我正在尝试计算曼哈顿距离 '[[0,1,2],[3,4,5],[6,7,8]]。目标是让它最终成为 [[1, 2, 3], [4, 5, 6], [7, 8, 0]]。但我不确定该怎么做。我试过这样做:
def manhattan_distance(self):
dist = 0
for i in range(len(self.board)):
dist += abs(self.board[i] - self.DEFAULT_BOARD[i])
return dist
self.board = [[0,1,2],[3,4,5],[6,7,8]] self.DEFAULT_BOARD = [[1, 2, 3], [4, 5, 6], [7, 8, 0]]
目前这是我的一个想法,可能会解决问题,但不会。我尝试在整个互联网上搜索我可以使用或学习的解决方案,但找不到
考虑这种方法:
import math
import itertools
def distance(a, b):
"""distance between two lists of numbers of same length"""
return math.sqrt(sum([a1**2 + b1**2 for a1, b1 in zip(a, b)]))
def taxi_dist(a, b):
"""takes two lists of lists"""
dist = 0
for el_a, el_b in itertools.izip_longest(a, b):
dist += distance(el_a, el_b)
return dist
if __name__ == "__main__":
print(taxi_dist([[0,1,2],[3,4,5],[6,7,8]],[[1,2,3],[4,5,6],[7,8,0]]))