mirror of
https://github.com/python/cpython.git
synced 2024-11-24 18:34:43 +08:00
Backport r68942: update powerset() recipe.
This commit is contained in:
parent
89e12963ad
commit
ace673391a
@ -590,11 +590,9 @@ which incur interpreter overhead.
|
||||
nexts = cycle(islice(nexts, pending))
|
||||
|
||||
def powerset(iterable):
|
||||
"powerset('ab') --> set([]), set(['a']), set(['b']), set(['a', 'b'])"
|
||||
# Recipe credited to Eric Raymond
|
||||
pairs = [(2**i, x) for i, x in enumerate(iterable)]
|
||||
for n in xrange(2**len(pairs)):
|
||||
yield set(x for m, x in pairs if m&n)
|
||||
"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
|
||||
s = list(iterable)
|
||||
return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
|
||||
|
||||
def compress(data, selectors):
|
||||
"compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F"
|
||||
|
@ -1277,11 +1277,9 @@ Samuele
|
||||
... nexts = cycle(islice(nexts, pending))
|
||||
|
||||
>>> def powerset(iterable):
|
||||
... "powerset('ab') --> set([]), set(['a']), set(['b']), set(['a', 'b'])"
|
||||
... # Recipe credited to Eric Raymond
|
||||
... pairs = [(2**i, x) for i, x in enumerate(iterable)]
|
||||
... for n in range(2**len(pairs)):
|
||||
... yield set(x for m, x in pairs if m&n)
|
||||
... "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
|
||||
... s = list(iterable)
|
||||
... return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
|
||||
|
||||
>>> def compress(data, selectors):
|
||||
... "compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F"
|
||||
@ -1379,8 +1377,8 @@ perform as purported.
|
||||
>>> list(roundrobin('abc', 'd', 'ef'))
|
||||
['a', 'd', 'e', 'b', 'f', 'c']
|
||||
|
||||
>>> list(map(sorted, powerset('ab')))
|
||||
[[], ['a'], ['b'], ['a', 'b']]
|
||||
>>> list(powerset([1,2,3]))
|
||||
[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]
|
||||
|
||||
>>> list(compress('abcdef', [1,0,1,0,1,1]))
|
||||
['a', 'c', 'e', 'f']
|
||||
|
Loading…
Reference in New Issue
Block a user