0

Python でリストをトラバースして平均を取得しようとしています。例えば、

A = [[3,4,6], [7,9,13], 'New York Jets']
  • A[0] は勝利を表します
  • A[1] は損失を表します
  • A[2] はチームです

やりたい: (3/10) + (4/13) + (6/19)

基本的に、勝ち/(勝ち+負け)です。これは私が試したものです:

wins = A[0]
losses = A[1]

total = 0.0
for w,l in zip(wins, losses):
    total += float(w/(w+l))

残念ながら、これは私に間違った答えを与えています

4

2 に答える 2

2
>>> A = [[3,4,6], [7,9,13], 'New York Jets']
>>> [float(wins)/(wins+losses) for wins, losses in zip(*A[:2])]
[0.3, 0.3076923076923077, 0.3157894736842105]
>>> sum(float(wins)/(wins+losses) for wins, losses in zip(*A[:2]))
0.9234817813765183
于 2013-05-05T21:33:13.550 に答える
2

w / (w + l)はすでに整数であるため、に渡してfloatも役に立ちません。

それらのいずれかをフロートにします。

float(w) / (w + 1)

または、Python 3 の除算をスクリプトの先頭にインポートします。ここで、2 つの整数を除算すると float になります。

from __future__ import division

次のようなことができます。

averages = []

for wins, losses, team in teams:
    average = sum(win / float(win + loss) for win, loss in zip(wins, losses))

    averages.append(average)
于 2013-05-05T21:33:33.067 に答える