Мои два цента. Мне нравится более простой однострочный код в Python:
>>> from itertools import imap, ifilter
>>> l = ['a', '', 'b', 1, None]
>>> ','.join(imap(str, ifilter(lambda x: x, l)))
a,b,1
>>> m = ['a', '', None]
>>> ','.join(imap(str, ifilter(lambda x: x, m)))
'a'
Это pythonic, работает для строк, чисел, None и пустой строки. Он короткий и удовлетворяет требованиям. Если список не будет содержать чисел, мы можем использовать этот более простой вариант:
>>> ','.join(ifilter(lambda x: x, l))
Также это решение не создает новый список, но использует итератор, как указал @Peter Hoffmann (спасибо).