1

この配列を持つ:

a = [1, None, 2], [3, 4, 5], [6, None, 7]

None の値を 0 に置き換える必要があります。最初の実装は配列を通過することですが、1 行で実行したいと考えています。

私はこのようなことを試みましたが、うまくいきませんでした:

a = [0 if value is None else value for value in a[i][1] for i in range(len(a))]

明らかに機能していません。正しいアプローチは何でしょうか?

編集:他の位置には触れたくありません。配列内のすべての要素の2番目の位置だけです。

これ:

a = [None, None, 2], [3, 4, 5], [6, None, 7]

これを返します:

a = [None, 0, 2], [3, 4, 5], [6, 0, 7]
4

3 に答える 3

3

使用or:

>>> a = [[1, None, 2], [3, 4, 5], [6, None, 7]]
>>> [[x or 0 for x in l] for l in a]
[[1, 0, 2], [3, 4, 5], [6, 0, 7]]

または、2 番目の要素のみを評価する場合は、次のようにします。

>>> a = [[1, None, 2], [3, 4, 5], [6, None, 7]]
>>> [[l[0], l[1] or 0] + l[2:] for l in a]
[[1, 0, 2], [3, 4, 5], [6, 0, 7]]
于 2013-10-09T20:07:59.483 に答える