From: "Alan Gauld" <[EMAIL PROTECTED]>

With other words I'd like to tell Python: Convert into a float if
possible, otherwise append anyway.

[ (type(x) == type(5) and float(x) or x) for x in mylist ]


This is a perfect opportunity to give the reminder that the conversion functions are also types that can be used more transparently for such type tests:


###
>>> type(int)
<type 'type'>
>>> type(1)==int
True
>>> type(1)==float
False
###

If you really want a float and not an int then you should use the following 1-liner as suggested by the programming FAQ 1.2.11 ( http://www.python.org/doc/faq/programming.html ):

[ (type(x) == int and [float(x)] or [x])[0] for x in mylist]

###
>>> l=['foo', 0]
>>> [(type(x)==int and float(x) or x) for x in l]
['foo', 0]
>>> # notice that 0 is still an int, not a float
>>> [(type(x)==int and [float(x)] or [x])[0] for x in l]
['foo', 0.0]
>>> # ok, that's better
###

/c


_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor

Reply via email to