Search code examples
pythonnonetype

Replace x by float(x) if and only if it is not None


x is either a string or None (for example a query param from a HTTP request: request.query.get('x')).

I'd like to transform it into a float if not None.

These 3 solutions work:

if x is None:
    y = None
else:
    y = float(x)

y = float(x) if x is not None else None    # or y = float(x) if x is not None else x

y = None if x is None else float(x)        # or y = x if x is None else float(x)

but probably is there a simpler way than this repetition of None?


Solution

  • You can do it this way:

    >>> x = "1.23"
    >>> y = x and float(x)
    >>> y
    1.23
    >>> x = None
    >>> y = x and float(x)
    >>> y