Joining a list:
>>> \'\'.join([ str(_) for _ in xrange(10) ]) \'0123456789\'
join must take an iterable.
join
Appa
The argument to your second join call is a generator expression. It does produce an iterable.