私はPythonが初めてです。DISTANCE(lat1, long1, lat2, long2)
2点間の距離を計算する関数があります。
次に、 というリストがPOINTS
あります。各値は、これら 4 つの値を含む別のリストです。
DISTANCE
内部のすべての値について、関数の結果の合計を取得したいと思いますPOINTS
。
誰でもそれを手伝ってもらえますか?ありがとう!
sum(DISTANCE(*p) for p in POINTS)
これは、splat 演算子とも呼ばれるUnpacking Argument Lists*
の構文です。これは iterableの内容を位置引数として関数に渡します。p
[1, 2, 3, 4]
DISTANCE(*p)
DISTANCE(1, 2, 3, 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 コードを作成するための多くの優れたスタイルの提案があります。
どうですか:
totalDistance = sum(DISTANCE(lat1, long1, lat2, long2) for (lat1, long1, lat2, long2) in POINTS)
Python を初めて使用する場合は、 loop を使用for-in
してください。
result=[]
for item in POINTS:
res=DISTANCE(*item)
result.append(res)
print(sum(result))
ここにあるものについて混乱している場合は、これ*
を読む必要があります