CodyKochmann
3/28/2017 - 9:21 PM

generator tools in python :)

generator tools in python :)

print=lambda g:{print(i) for i in g}
len=lambda g:sum(1 for i in g)
fork=lambda g,c=2:((i,)*c for i in g)
first=lambda g, cnt:(next(g) for i in range(cnt))
fork_every_other=lambda g:((v,None) if i%2 else (None,v) for i,v in enumerate(g))
run=lambda g:{i for i in g}

def unfork(g):
    """ returns a generator with one output at a time if
        multiple outputs are coming out of the given """
    for i in g:
        for x in i:
            yield x

def fork(g,c=2):
    """ fork a generator in python """
    return ((i,)*c for i in g)

def multiple_ops(g, *f):
    """ fork a generator with multiple operations being 
        ran on its values """
    for i in g:
        if len(f)>1:
            yield tuple(func(i) for func in f)
        else:
            yield f[0](i)