Вы можете сделать что-то ужасное, как это:
>>> n = 2
>>> lst = 1,2,3,4,5,6
>>> [x for i in range(0, len(lst), n) for sub in (lst[i:i+n],(0,)) for x in sub]
[1, 2, 0, 3, 4, 0, 5, 6, 0]
Это трудно читать и менее эффективно, чем наивная реализация, использующая простой цикл for.Не используйте это.
гораздо лучше писать чистый, хорошо организованный код, а не пытаться без причины писать списки.Если версия со списком не кажется очевидной, то почти наверняка ее не стоит писать.Рассмотрим следующее решение:
>>> def chunk_list_by_n(lst, n):
... for i in range(0, len(lst), n):
... yield lst[i:i+n]
...
>>> def foo(lst, n):
... result = []
... for chunk in chunk_list_by_n(lst, n):
... result.extend(chunk)
... if len(chunk) == n:
... result.append(0)
... return result
...
>>> foo((1,2,3,4,5,6),2)
[1, 2, 0, 3, 4, 0, 5, 6, 0]
Я использовал больше строк, но я разбил свою программу на повторно используемые компоненты.Когда я вернусь и перечитал это через месяц, это будет легче понять, чем этот ужасный однострочник.