Neaten-up the itertools recipes.
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 @@
        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 @@
            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 @@
 ...     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 @@
 ...         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"