2

私はPythonが初めてです。DISTANCE(lat1, long1, lat2, long2)2点間の距離を計算する関数があります。

次に、 というリストがPOINTSあります。各値は、これら 4 つの値を含む別のリストです。

DISTANCE内部のすべての値について、関数の結果の合計を取得したいと思いますPOINTS

誰でもそれを手伝ってもらえますか?ありがとう!

4

4 に答える 4

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

これは、splat 演算子とも呼ばれるUnpacking Argument Lists*の構文です。これは iterableの内容を位置引数として関数に渡します。p[1, 2, 3, 4]DISTANCE(*p)DISTANCE(1, 2, 3, 4)

于 2012-07-09T19:27:04.273 に答える
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 コードを作成するための多くの優れたスタイルの提案があります。

于 2012-07-09T19:29:15.867 に答える
4

どうですか:

totalDistance = sum(DISTANCE(lat1, long1, lat2, long2) for (lat1, long1, lat2, long2) in POINTS)
于 2012-07-09T19:25:54.423 に答える
2

Python を初めて使用する場合は、 loop を使用for-inしてください。

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

ここにあるものについて混乱している場合は、これ*を読む必要があります

于 2012-07-09T19:30:07.173 に答える