Из itertools есть рецепт 'grouper', показанный здесь:
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return itertools.izip_longest(fillvalue=fillvalue, *args)
Тогда функция, которую вы хотите, давайте назовем ее mix
, благодаря gnibbler, выглядит как
def mix(s, c=' ', n=1):
return c.join(''.join(seq) for seq in grouper(n, s, '')) + c
Я предпочитаю его ответу Гнибблера, потому что его легче понять (и написать), так как он рассматривается в терминах существующей grouper
функции, которая используется для подобных вещей.