On Mon, 06 Apr 2009 20:05:51 -0400, Neal Becker wrote:
> I'm trying to make a multiplexor and demultiplexor, using generators.
> The multiplexor will multiplex N sequences -> 1 sequence (assume equal
> length). The demultiplexor will do the inverse.
>
> The mux seems easy enough:
>
> -----------------------
> def mux (*ranges):
> iterables = [iter (r) for r in ranges] while (True):
> for i in (iterables):
> yield i.next()
This is like a zip, and can be re-written using itertools.izip.
def mux(*iterables):
for i in itertools.izip(*iterables):
for item in i:
yield item
The demuxer can't be an iterator, since it needs to run through the
entire collection.
def demux(it, n):
collectors = [[] for i in xrange(n)]
i = 0
for item in it:
collectors[i].append(item)
i = (i+1) % n
return tuple([iter(x) for x in collectors])
--
Steven
--
http://mail.python.org/mailman/listinfo/python-list