Объединение списка:
>>> ''.join([ str(_) for _ in xrange(10) ])
'0123456789'
join должен выполнять итерацию.
По-видимому, аргумент join имеет значение [ str(_) for _ in xrange(10) ], и это описание .
Посмотрите на это:
>>>''.join( str(_) for _ in xrange(10) )
'0123456789'
Теперь аргумент join равен str(_) for _ in xrange(10), no [], но результат тот же.
Почему? Создает ли str(_) for _ in xrange(10) список или итерируемый?