我對Python很新。我有一個功能DISTANCE(lat1, long1, lat2, long2)
計算2點之間的距離。如何使用另一個列表中的列表的值作爲Python中函數的參數
然後我有一個名爲POINTS
的列表,其中每個值都是包含這四個值的另一個列表。
我想獲得POINTS
中所有值的函數DISTANCE
的結果總和。
任何人都可以幫助我嗎?謝謝!
我對Python很新。我有一個功能DISTANCE(lat1, long1, lat2, long2)
計算2點之間的距離。如何使用另一個列表中的列表的值作爲Python中函數的參數
然後我有一個名爲POINTS
的列表,其中每個值都是包含這四個值的另一個列表。
我想獲得POINTS
中所有值的函數DISTANCE
的結果總和。
任何人都可以幫助我嗎?謝謝!
使用for-in
循環,如果你是新來的Python:
result=[]
for item in POINTS:
res=DISTANCE(*item)
result.append(res)
print(sum(result))
,如果你感到困惑什麼是*
這裏,你應該閱讀this
如何:
totalDistance = sum(DISTANCE(lat1, long1, lat2, long2) for (lat1, long1, lat2, long2) in POINTS)
sum(DISTANCE(*p) for p in POINTS)
這裏的*
是語法Unpacking Argument Lists,也被稱爲圖示操作。這將可迭代的內容作爲位置參數傳遞給函數,因此如果p
是[1, 2, 3, 4]
,DISTANCE(*p)
將與DISTANCE(1, 2, 3, 4)
相同。
你打敗了我! – kojiro 2012-07-09 19:29:10
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代碼。
可以刪除括號'[]'和使用一個genexp而不是一個listcomp。 – DSM 2012-07-09 19:29:02
@DSM。當然。謝謝。 – 2012-07-09 19:30:24