2

我对 Python 很陌生。我有一个DISTANCE(lat1, long1, lat2, long2)计算两点之间距离的函数。

然后我有一个名为 的列表POINTS,其中每个值都是另一个包含这四个值的列表。

我想获得DISTANCE里面所有值的函数结果的总和POINTS

有人可以帮我吗?谢谢!

4

4 回答 4

8
sum(DISTANCE(*p) for p in POINTS)

*Unpacking Argument Lists的语法,也称为 splat 运算符。这会将可迭代的内容作为位置参数传递给函数,因此如果p[1, 2, 3, 4],DISTANCE(*p)将与 相同DISTANCE(1, 2, 3, 4)

于 2012-07-09T19:27:04.273 回答
4

怎么样:

totalDistance = sum(DISTANCE(lat1, long1, lat2, long2) for (lat1, long1, lat2, long2) in POINTS)
于 2012-07-09T19:25:54.423 回答
4
sum([DISTANCE(*args) for args in POINTS])

这个单行代码的作用是在 上使用列表推导POINTS,将其中的每个项目作为列表应用到DISTANCE,如下所示:

args = [1, 2, 3, 4]
DISTANCE(*args) == DISTANCE(1, 2, 3, 4)

调用sum接受一个列表本身并返回其中所有项目的总和。

一个建议:用所有小写字母命名你的函数。 PEP 8有很多很好的风格建议来制作可读的 Python 代码。

于 2012-07-09T19:29:15.867 回答
2

for-in如果您是 python 新手,请使用循环:

result=[]
for item in POINTS:
    res=DISTANCE(*item)  
    result.append(res)
print(sum(result))

如果你对*这里的内容感到困惑,你应该阅读这个

于 2012-07-09T19:30:07.173 回答