soltar à direita '.0' de carros alegóricos

Estou procurando uma maneira de converter números em formato de string, descartando qualquer '.0' redundante

Os dados de entrada são uma mistura de flutuadores e seqüências de caracteres. Saída desejada:

0 -> '0'

0,0 -> '0'

0,1 -> '0,1'

1.0 -> '1'

Eu vim com a seguinte expressão de gerador, mas me pergunto se existe uma maneira mais rápida:

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

A verificação da verdade existe para impedir que 0 se torne uma sequência vazia.

EDIT: A solução mais ou menos aceitável que tenho por enquanto é esta:

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

Parece estranho que não exista uma maneira elegante de lidar com esse caso (bastante direto) em python.