dejando caer '.0' al final de las carrozas

Estoy buscando una forma de convertir números a formato de cadena, descartando cualquier '.0' redundante

Los datos de entrada son una mezcla de flotantes y cadenas. Salida deseada:

0 -> '0'

0.0 -> '0'

0.1 -> '0.1'

1.0 -> '1'

Se me ocurrió la siguiente expresión generadora, pero me pregunto si hay una forma más rápida:

(str(i).rstrip('.0') if i else '0' for i in lst)

La verificación de la verdad está ahí para evitar que 0 se convierta en una cadena vacía.

EDITAR: La solución más o menos aceptable que tengo por ahora es esta:

('%d'%i if i == int(i) else '%s'%i for i in lst)

Parece extraño que no haya una forma elegante de manejar este caso (bastante sencillo) en Python.