Почему filter object не приводится к str в python?
Собственно, почему приходится городить вот такую конструкцию:
А зачем ты результат фильтрации приводишь к list()?>>> b = ''.join(filter(None, 'abcde'))
>>> b
'abcde'
>>>
А зачем вообще что-то преобразовывать?
>>> filter(lambda c: c.islower() or c.isdigit(), 'asd123ASD!@#')
'asd123'
В описании filter четко описано : If iterable is a string or a tuple, the result also has that type; 
Но это если у вас 'a' - строка. Если 'a' - список - то вы сначала его в строку преобразуйте.
Но это верно для второго питона - в третьем filter это не функция, а итератор, которые нужно обработать прежде чем получишь строку: 
>>> ''.join(filter(lambda c: c.islower() or c.isdigit(), 'asd123ASD!@#'))
'asd123'
>>>