История изменений
Исправление qulinxao3, (текущая версия) :
эскиз (хз работающий ли)(развал списка на голову хвост явно не продукт блэйзинг фаст):
from itertools import count
def mkspli(ita,fu,tbl):
tbl=list(tbl) #итератор(возможно и просто список) в заведомый список хз
bufs=dict(zip(tbl,([]for _ in count())))
def mkItFor(k):
def itForK():
while 1:
while not bufs[k]:
try:
v=next(ita)
bufs[fu(v)].append(v)
except Exception as e :
print(e)
return
res,*bufs[k]=bufs[k]
yield res
return itForK
its={k:mkItFor(k) for k in tbl}
return its
Исходная версия qulinxao3, :
эскиз (хз работающий ли)(развал списка на голову хвост явно не продукт блэйзинг фаст):
from itertools import count
def mkspli(ita,fu,tbl):
tbl=list(*tbl)
bufs=dict(zip(tbl,([]for _ in count())))
def mkItFor(k):
def itForK():
while 1:
while not bufs[k]:
try:
v=next(ita)
bufs[fu(v)].append(v)
except Exception as e :
print(e)
return
res,*bufs[k]=bufs[k]
yield res
return itForK
its={k:mkItFor(k) for k in tbl}
return its