mirror of
https://github.com/python/cpython.git
synced 2025-11-25 12:44:13 +00:00
Neaten-up the itertools recipes.
This commit is contained in:
parent
66b14de7bb
commit
efdf706a9f
2 changed files with 8 additions and 12 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue