5 queens
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Sun Dec 23 07:04:53 EST 2007
On Sun, 23 Dec 2007 02:22:38 -0800, cf29 wrote:
> How would you write a function that will populate a list with a list of
> numbers with all the possibilities? For example a list of 3 numbers
> taken among 4 [0,1,2,3] without duplicates. The result should be:
> [0,1,2]
> [0,1,3]
> [0,2,3]
> [1,2,3]
What you are asking for is the combinations of the list, taking 3
elements at a time. Try using this generator:
def combinations(seq, n):
if n == 0:
yield []
else:
for i in xrange(len(seq)):
for cc in combinations(seq[i+1:], n-1):
yield [seq[i]]+cc
>>> for c in combinations(range(4), 3):
... print c
...
[0, 1, 2]
[0, 1, 3]
[0, 2, 3]
[1, 2, 3]
--
Steven
More information about the Python-list
mailing list