Feature Requests item #1757395, was opened at 2007-07-20 04:12 Message generated for change (Comment added) made by rhettinger You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=355470&aid=1757395&group_id=5470
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Python Library Group: Python 2.6 Status: Closed Resolution: Rejected Priority: 5 Private: No Submitted By: Alexander Dutton (asdutton) Assigned to: Nobody/Anonymous (nobody) Summary: splice() function for itertools Initial Comment: Could we have a splice function in itertools? I see there was once a roundrobin proposal (#756253), but it was three years ago ... Here's an alternate implementation: def splice(*args): """splice(*iterables) --> iterator Returns an iterator whose next() method returns an element from each of the iterables in turn before starting again with the first iterable.""" iters = list(args) n = len(iters) i = 0 while n>0: i %= n try: yield iters[i].next() i += 1 except StopIteration, e: n -= 1 iters[i:i+1] = [] raise StopIteration ---------------------------------------------------------------------- >Comment By: Raymond Hettinger (rhettinger) Date: 2007-07-22 11:51 Message: Logged In: YES user_id=80475 Originator: NO FWIW, here is the optimized recipe: def roundrobin(*iterables): pending = deque(iter(i).next for i in reversed(iterables)) rotate, pop, _StopIteration = pending.rotate, pending.pop, StopIteration while pending: try: while 1: yield pending[-1]() rotate() except _StopIteration: pop() ---------------------------------------------------------------------- Comment By: Raymond Hettinger (rhettinger) Date: 2007-07-22 11:19 Message: Logged In: YES user_id=80475 Originator: NO The reasons for rejecting the roundrobin proposal still apply three years later. It is somewhat use case challenged. FWIW, there is a reasonably efficient pure python implementation using collections.deque(). See http://docs.python.org/lib/deque-recipes.html for an unoptimized recipe which can be fine-tuned to use bound methods and all local variables for better speed. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=355470&aid=1757395&group_id=5470 _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com