2012-07-09 59 views

回答

2

使用for-in循環,如果你是新來的Python:

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

,如果你感到困惑什麼是*這裏,你應該閱讀this

4

如何:

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

可以刪除括號'[]'和使用一個genexp而不是一個listcomp。 – DSM 2012-07-09 19:29:02

+0

@DSM。當然。謝謝。 – 2012-07-09 19:30:24

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

這裏的*是語法Unpacking Argument Lists,也被稱爲圖示操作。這將可迭代的內容作爲位置參數傳遞給函數,因此如果p[1, 2, 3, 4],DISTANCE(*p)將與DISTANCE(1, 2, 3, 4)相同。

+0

你打敗了我! – kojiro 2012-07-09 19:29:10

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代碼。

相關問題