Some thougts on cartesian products

Christoph Zwerschke cito at
Sun Jan 22 19:06:46 CET 2006

Alex Martelli schrieb:
> Christoph Zwerschke <cito at> wrote:
>    ...
>> given length. You could get a 6/49 lotto tip with something like:
>> choice(set(range(49)).powerset(6))

> And that would be better than the current random.sample(range(49),6) in
> WHAT ways, exactly...?

You're right, random.sample(range(49),6) does the same and much faster. 
I just didn't think of it (it is new since Python 2.3).

What if you need 12 different tips for your lotto ticket?

s = set(range(49)).powerset(6)
for x in range(10):
     print s.pop()

But the real disadvantage of this idea is the memory consumed and the 
time to set up that memory: set(range(49)).powerset(6) has a cardinality 
of about 13 million entries! You PC would start to swap just for getting 
a lotto tip...

-- Christoph

More information about the Python-list mailing list