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