Я — эксперт в области разработки веб-приложений и безопасности в интернете. Каждый месяц мой блог посещают около 90 тысяч человек. Работаю техническим директором в «Системах документооборота», занимаюсь электронным правительством.
from itertools import groupby, chain, starmap
def ntrim(letter, n=3, replby=1):
return list(chain(
*starmap(
lambda item, grp: [grp, [''] * replby][item and len(grp)>=n],
((item, list(grp)) for item, grp in
groupby(chain(['']*n, letter, ['']*n), lambda x:x)
)
)
))[replby:-replby]Я модифицировал исходную задачу: последовательности из трёх и более пустых строк заменяются на одну, пустые элементы в начале и конце списка удаляются. И ещё я прибил ленивый триплет из Python 2.5, потому что на домашнем ноуте у меня 2.5, а на рабочем сервере будет 2.4. Надо, кстати, будет посмотреть не цепляется ли он как-то через __future__. Завтра посмотрю, сейчас — спать.