I wrote a small generator function that produces multinomial combinations. (Python's itertools module does ordinary combinations, but not multinomial combinations). The code essentially works, except that the the last combination in each tuple is not enclosed in a nested tuple:
In [2]: x= multinomial_combinations(range(7),[2,1,2]) In [3]: x.next() Out[3]: ((0, 1), (2,), 3, 4) (The 3 and 4 should be enclosed in a nested tuple). Any suggestions as to what I'm doing wrong will be appreciated. My code follows: def multinomial_combinations(items, ns): if len(ns) == 1: for c in itertools.combinations(items, ns[0]): yield c else: for c_first in itertools.combinations(items, ns[0]): items_remaining= set(items) - set(c_first) for c_other in multinomial_combinations(items_remaining, ns[1:]): yield (c_first,) + c_other -- View this message in context: http://old.nabble.com/multinomial-combinations-tp32503896p32503896.html Sent from the Python - python-list mailing list archive at Nabble.com. -- http://mail.python.org/mailman/listinfo/python-list