On Mon, Apr 23, 2012 at 11:07 AM, Nestor <nestornissen@gmail.com> wrote:
I wonder if we should add a subsequences function to itertools or make the "r" parameter of combinations optional to return all combinations up to len(iterable).
Why? It just makes itertools using code that much harder to read, since you'd have yet another variant to learn. If you need it, then just define a separate "all_combinations()" that makes it clear what is going on (replace yield from usage with itertools.chain() for Python < 3.3): from itertools import combinations def all_combinations(data): for num_items in range(1, len(data)+1): yield from combinations(data, num_items) def array_test(arr): biggest = max(arr) data = [x for x in arr if x != biggest] for combo in all_combinations(data): if sum(combo) == biggest: return True, combo return False, None When a gain in brevity increases the necessary level of assumed knowledge for future maintainers, it isn't a clear win from a language design point of view. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia