python计算曼哈顿距离
时间: 2024-10-10 08:14:52 浏览: 56
在Python中,曼哈顿距离也称为城市街区距离,它是两点在网格状坐标系中水平和垂直方向上距离之和的绝对值。如果你有两个点,比如`(x1, y1)`和`(x2, y2)`,计算它们之间的曼哈顿距离可以使用下面的公式:
```python
def manhattan_distance(point1, point2):
x1, y1 = point1
x2, y2 = point2
return abs(x1 - x2) + abs(y1 - y2)
```
或者更简洁地,你可以直接使用内置函数`sum()`:
```python
def manhattan_distance(point1, point2):
return sum(abs(coord1 - coord2) for coord1, coord2 in zip(point1, point2))
```
例如,如果你想计算点(3,4)和点(9,7)之间的曼哈顿距离,可以这样调用:
```python
distance = manhattan_distance((3, 4), (9, 7))
print(distance) # 输出:10
```
相关问题
python 计算曼哈顿距离
曼哈顿距离又称为城市街区距离,可以用以下公式计算:
$d(x,y) = \sum_{i=1}^{n}|x_i - y_i|$
其中 $x$ 和 $y$ 是两个向量,$n$ 是向量的维数。
在 Python 中,可以通过以下代码实现曼哈顿距离的计算:
```python
def manhattan_distance(x, y):
return sum(abs(a - b) for a, b in zip(x, y))
```
其中,`x` 和 `y` 是两个向量,可以是列表、元组或者 NumPy 数组等类型。`zip` 函数将两个向量的元素一一对应组成 tuple,然后使用 `sum` 函数计算每个维度上的距离之和。
python计算曼哈顿距离带else函数
在Python中,曼哈顿距离(Manhattan Distance),也称为城市街区距离或L1距离,是一种衡量两个点之间在网格状坐标系上移动总距离的方式。如果你想要编写一个计算曼哈顿距离的函数,并包含一个`else`分支处理特殊情况,比如输入不是有序列表或元组,你可以这样做:
```python
def manhattan_distance(point_a, point_b):
# 检查输入是否为有序序列
if not (isinstance(point_a, (list, tuple)) and isinstance(point_b, (list, tuple))):
return "输入错误,请提供两个有序点作为列表或元组"
# 如果都是二维坐标,提取x和y值
x1, y1 = point_a
x2, y2 = point_b
# 计算曼哈顿距离
distance = abs(x1 - x2) + abs(y1 - y2)
return distance
# 示例
distance = manhattan_distance([0, 0], [3, 4])
print(distance) # 输出:7
# 错误示例(会触发else分支)
invalid_input = 5
distance = manhattan_distance(invalid_input, [3, 4])
print(distance) # 输出:"输入错误,请提供两个有序点作为列表或元组"
```
在这个函数里,我们首先检查输入是否为有序的点对,如果不是,则返回错误信息。如果输入是有效的,我们会计算并返回两点之间的曼哈顿距离。
阅读全文