5

次のコードがあります。

scores = [matrix[i][i] / sum(matrix[i]) for (i, scores) in enumerate(matrix)]

私の問題は、sum(matrix[i])場合によっては 0 になる可能性があり、ZeroDivisionError. しかしmatrix[i][i]、その場合も 0 であるため、次のように解決しました。

scores = [divide(matrix[i][i], sum(matrix[i])) for (i, scores) in enumerate(matrix)]

この関数は、 ifおよびifの場合divide(x, y)に 1 を返します。しかし、もっと簡単な方法があるのだろうかと思います。三項演算子を使用できるかもしれませんが、それは Python に存在しますか?y == 0(x / y)y > 0

4

3 に答える 3

6

はい、Python では条件式と呼ばれます。

[matrix[i][i] / sum(matrix[i]) if sum(matrix[i]) != 0 else 0 
 for (i, scores) in enumerate(matrix)]
于 2013-06-21T12:44:43.807 に答える
2
[(lambda x, y: 0 if y == 0 else x/y)(row[i], sum(row))
 for i, row in enumerate(matrix)]
于 2013-06-21T12:57:29.383 に答える
1

三項条件は存在します:

'blah' if True else 'wee'
于 2013-06-21T12:45:44.253 に答える