From efdf706a9fb20da82d8b600cce47a3fafb490571 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Wed, 30 Jul 2008 07:27:30 +0000 Subject: Neaten-up the itertools recipes. --- Doc/library/itertools.rst | 10 ++++------ Lib/test/test_itertools.py | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 13d3147..6bda2cf 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -645,13 +645,13 @@ which incur interpreter overhead. return izip(a, b) def grouper(n, iterable, fillvalue=None): - "grouper(3, 'abcdefg', 'x') --> ('a','b','c'), ('d','e','f'), ('g','x','x')" + "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx" args = [iter(iterable)] * n kwds = dict(fillvalue=fillvalue) return izip_longest(*args, **kwds) def roundrobin(*iterables): - "roundrobin('abc', 'd', 'ef') --> 'a', 'd', 'e', 'b', 'f', 'c'" + "roundrobin('ABC', 'D', 'EF') --> A D E B F C" # Recipe credited to George Sakkis pending = len(iterables) nexts = cycle(iter(it).next for it in iterables) @@ -671,10 +671,8 @@ which incur interpreter overhead. yield set(x for m, x in pairs if m&n) def compress(data, selectors): - "compress('abcdef', [1,0,1,0,1,1]) --> a c e f" - decorated = izip(data, selectors) - filtered = ifilter(operator.itemgetter(1), decorated) - return imap(operator.itemgetter(0), filtered) + "compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F" + return (d for d, s in izip(data, selectors) if s) def combinations_with_replacement(iterable, r): "combinations_with_replacement('ABC', 3) --> AA AB AC BB BC CC" diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 1a4e936..f6174ab 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -1234,13 +1234,13 @@ Samuele ... return izip(a, b) >>> def grouper(n, iterable, fillvalue=None): -... "grouper(3, 'abcdefg', 'x') --> ('a','b','c'), ('d','e','f'), ('g','x','x')" +... "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx" ... args = [iter(iterable)] * n ... kwds = dict(fillvalue=fillvalue) ... return izip_longest(*args, **kwds) >>> def roundrobin(*iterables): -... "roundrobin('abc', 'd', 'ef') --> 'a', 'd', 'e', 'b', 'f', 'c'" +... "roundrobin('ABC', 'D', 'EF') --> A D E B F C" ... # Recipe credited to George Sakkis ... pending = len(iterables) ... nexts = cycle(iter(it).next for it in iterables) @@ -1260,10 +1260,8 @@ Samuele ... yield set(x for m, x in pairs if m&n) >>> def compress(data, selectors): -... "compress('abcdef', [1,0,1,0,1,1]) --> a c e f" -... decorated = izip(data, selectors) -... filtered = ifilter(operator.itemgetter(1), decorated) -... return imap(operator.itemgetter(0), filtered) +... "compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F" +... return (d for d, s in izip(data, selectors) if s) >>> def combinations_with_replacement(iterable, r): ... "combinations_with_replacement('ABC', 3) --> AA AB AC BB BC CC" -- cgit v0.12