如何使用另一个列表中的列表值作为Python中函数的参数

How to use the values of a list that is inside another list as arguments of a function in Python

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

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

我想得到函数DISTANCEPOINTS中所有值的结果之和。

有人能帮我吗?谢谢!


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

这里是用于解包参数列表的语法,也称为splat运算符。这将iterable的内容作为位置参数传递给函数,因此如果p[1, 2, 3, 4]DISTANCE(*p)将与DISTANCE(1, 2, 3, 4)相同。


1
sum([DISTANCE(*args) for args in POINTS])

这一行的作用是在POINTS上使用列表理解,将其中的每个项目作为列表应用到DISTANCE上,如下所示:

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

sum的调用将获取一个列表本身,并返回其中所有项的总和。

建议:用小写字母命名函数。PEP8对编写可读的Python代码有很多很好的风格建议。


怎么样:

1
totalDistance = sum(DISTANCE(lat1, long1, lat2, long2) for (lat1, long1, lat2, long2) in POINTS)


如果您不熟悉python,请使用for-in循环:

1
2
3
4
5
result=[]
for item in POINTS:
    res=DISTANCE(*item)  
    result.append(res)
print(sum(result))

如果你对这里的*是什么感到困惑,你应该读一下