def bisect_any_to_iter(pred, it):
    it = iter(it)
head = []
for i in it:
    if pred(i):
        head.append(i)
else:
    tail = itertools.chain([i], it)
break
return iter(head), tail
a, b = bisect_iter_to_iter(str.isalpha, iter(l))
list(a)
list(b)
как разделить список на два в точке, где предикат является первым False