测试值是否为小数
在一些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循环,那就改吧。