diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index ee50e2a..8c482c5 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -1255,13 +1255,13 @@
 ...     return zip(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 zip_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)
@@ -1281,10 +1281,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 = zip(data, selectors)
-...     filtered =  filter(operator.itemgetter(1), decorated)
-...     return map(operator.itemgetter(0), filtered)
+...     "compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F"
+...     return (d for d, s in zip(data, selectors) if s)
 
 >>> def combinations_with_replacement(iterable, r):
 ...     "combinations_with_replacement('ABC', 3) --> AA AB AC BB BC CC"
