测试值是否为小数

0 投票
2 回答
3993 浏览
提问于 2025-04-15 20:08

在一些Python(3版)的代码中,我正在根据用户输入创建一些小数的列表,像这样:

input = [] # later populated with strings by user with values like '1.45984000E+001'
decimals = [Decimal(c) for c in input]

不过,有时候输入的列表里会有一些字符串,这些字符串无法被解析成小数。那么,在调用构造函数之前,我该如何检查c是否可以表示为小数呢?

2 个回答

3

捕获异常

decimals = []
for s in input:
    try: decimals.append(Decimal(s))
    except InvalidOperation:
        pass

使用辅助函数

from itertools import imap

def parse_decimal(s):
    try: return Decimal(s)
    except InvalidOperation:
        return None

decimals = [d for d in imap(parse_decimal, input) if d is not None]
0

别这么做。不要去捕捉构造函数抛出的异常。如果这意味着要把列表推导式改成一个for循环,那就改吧。

撰写回答