1

私はこの特定の機能を機能させることに非常に近づいていますが、壁にぶつかりました。

要素が0.50より大きい場合にのみ、最も近い整数に丸めたいフロートのリストがあります。そして、想定外の要素(数値ではないもの)があれば、そのままにしておきたいと思います。

mylist = ['58.20','34.99','0.39','0.89','34.55', '-']

期待される結果

mylist = ['58','35','0.39','1','35', '-']

これまでの私のコードは次のとおりです。

[str(int(round(float(x)))) if float(x) > 0.5 else str(x) for x in mylist]

「elif」ステートメントを追加する必要があると思いますが、式がどのようになるかわかりませんか?

皆さんありがとう!

4

1 に答える 1

1

ここで例外処理を使用できます。

def solve(x):
    try:
        num = float(x)
        return str(int(round(num))) if num > 0.50 else x
    except ValueError:
        return x
...     
#Using list comprehension
>>> [solve(x) for x in  lis]
['58', '35', '0.39', '1', '35', '-']
#using map
>>> map(solve, lis)
['58', '35', '0.39', '1', '35', '-']
于 2013-06-11T16:51:53.723 に答える