I believe that the current most efficient way of doing this is ''.join(map(str, range(n)))
In Python 3, the map builtin is basically equivalent what itertools.imap was in Python 2, so it is the best choice. (Also, the range builtin in Python 3 no longer realizes a list.)