我对 Python 很陌生。我有一个DISTANCE(lat1, long1, lat2, long2)
计算两点之间距离的函数。
然后我有一个名为 的列表POINTS
,其中每个值都是另一个包含这四个值的列表。
我想获得DISTANCE
里面所有值的函数结果的总和POINTS
。
有人可以帮我吗?谢谢!
sum(DISTANCE(*p) for p in POINTS)
这*
是Unpacking Argument Lists的语法,也称为 splat 运算符。这会将可迭代的内容作为位置参数传递给函数,因此如果p
是[1, 2, 3, 4]
,DISTANCE(*p)
将与 相同DISTANCE(1, 2, 3, 4)
。
怎么样:
totalDistance = sum(DISTANCE(lat1, long1, lat2, long2) for (lat1, long1, lat2, long2) in POINTS)
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 代码。
for-in
如果您是 python 新手,请使用循环:
result=[]
for item in POINTS:
res=DISTANCE(*item)
result.append(res)
print(sum(result))
如果你对*
这里的内容感到困惑,你应该阅读这个