In article <[EMAIL PROTECTED]>, "Xah Lee" <[EMAIL PROTECTED]> wrote:
> combo(n) returns a collection with elements of pairs that is all > possible combinations of 2 things from n. For example, combo(4) > returns {'3,4' => ['3',4],'1,2' => [1,2],'1,3' => [1,3],'1,4' => > [1,4],'2,3' => ['2',3],'2,4' => ['2',4]}; Hash form is returned > instead of array for this program. def combo(n): return dict([('%d,%d'%(i,j),(i,j)) for j in range(n) for i in range(j)]) import pprint pprint.pprint(combo(5)) output: {'0,1': (0, 1), '0,2': (0, 2), '0,3': (0, 3), '0,4': (0, 4), '1,2': (1, 2), '1,3': (1, 3), '1,4': (1, 4), '2,3': (2, 3), '2,4': (2, 4), '3,4': (3, 4)} Note I'm using 0-based indexing, use range(1,n+1) and range(1,j+1) instead if you really need it to be 1-based. Also I'm using Python 2.3, I think in 2.4 you can take out the square brackets and it would still work. -- David Eppstein Computer Science Dept., Univ. of California, Irvine http://www.ics.uci.edu/~eppstein/ -- http://mail.python.org/mailman/listinfo/python-list