In some Python (v3) code I am creating lists of Decimals from user input, like this:
input = [] # later populated with strings by user with values like '1.45984开发者_高级运维000E+001'
decimals = [Decimal(c) for c in input]
However, sometimes the input list contains strings that cannot be parsed. How can I test if c can be represented as a decimal before calling the constructor?
Catch exception
decimals = []
for s in input:
    try: decimals.append(Decimal(s))
    except InvalidOperation:
        pass
Use helper function
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]
Don't. Catch the exception thrown by the constructor. If that means turning the list comprehension into a for loop then so be it.
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论