Skip to content

Instantly share code, notes, and snippets.

def remove_spans_gen(s, spans):
checker = make_range_checker(spans); next(checker)
return ''.join(c for (i, c) in enumerate(s) if not checker.send(i))
def make_range_checker(spans):
idx = yield
for (i, j) in spans:
while idx < j:
idx = (yield i <= idx < j)
while True:
from itertools import chain, starmap
def remove_spans(s, spans):
to_drop = set(chain(*starmap(range, spans)))
return ''.join(c for (i, c) in enumerate(s) if i not in to_drop)