<p>(sorry about the top posting)</p>
<p>Change yield c to yield (c,)</p>
<p>HTH</p>
<p>Arnaud</p>
<p>PS: you could also change the if ... To</p>
<p>If not ns:<br>
    Yield ((),)<br>
Else:<br>
    ...</p>
<div class="gmail_quote">On Sep 24, 2011 8:06 AM, "Dr. Phillip M. Feldman" <<a href="mailto:Phillip.M.Feldman@gmail.com">Phillip.M.Feldman@gmail.com</a>> wrote:<br type="attribution">> <br>> I wrote a small generator function that produces multinomial combinations. <br>
> (Python's itertools module does ordinary combinations, but not multinomial<br>> combinations).  The code essentially works, except that the the last<br>> combination in each tuple is not enclosed in a nested tuple:<br>
> <br>> In [2]: x= multinomial_combinations(range(7),[2,1,2])<br>> <br>> In [3]: x.next()<br>> Out[3]: ((0, 1), (2,), 3, 4)<br>> <br>> (The 3 and 4 should be enclosed in a nested tuple).<br>> <br>> Any suggestions as to what I'm doing wrong will be appreciated.  My code<br>
> follows:<br>> <br>> def multinomial_combinations(items, ns):<br>> <br>>    if len(ns) == 1:<br>>       for c in itertools.combinations(items, ns[0]):<br>>          yield c<br>> <br>>    else:<br>
>       for c_first in itertools.combinations(items, ns[0]):<br>>          items_remaining= set(items) - set(c_first)<br>>          for c_other in multinomial_combinations(items_remaining, ns[1:]):<br>>             yield (c_first,) + c_other<br>
> -- <br>> View this message in context: <a href="http://old.nabble.com/multinomial-combinations-tp32503896p32503896.html">http://old.nabble.com/multinomial-combinations-tp32503896p32503896.html</a><br>> Sent from the Python - python-list mailing list archive at Nabble.com.<br>
> <br>> -- <br>> <a href="http://mail.python.org/mailman/listinfo/python-list">http://mail.python.org/mailman/listinfo/python-list</a><br></div>