Speeding up permutations generation

Chris Angelico rosuav at gmail.com
Fri Mar 6 04:59:14 EST 2015


On Fri, Mar 6, 2015 at 7:24 PM, Abhiram R <abhi.darkness at gmail.com> wrote:
>> A list of 100 elements has approximately 9.33 x 10**157 permutations.
>> If you could somehow generate one permutation every yoctosecond,
>> exhausting them would still take more than a hundred orders of
>> magnitude longer than the age of the universe.
>> --
>> https://mail.python.org/mailman/listinfo/python-list
>
>
> True that :D I may have exaggerated on the number. Let's consider something
> more practically manageable => 50 elements with a 50! permutation.
> Is there a solution now?
>

Is the actual generation of permutations your problem? You mentioned
that you're using itertools, so I would expect that you're simply
iterating over that; I hope you're not immediately trying to construct
a list of them all, because that would cost the memory that Mark's
response talks about. Have you actually profiled your code and found
that generating permutations is the bottleneck, or did you just guess?
Because even experienced programmers - even extremely experienced
Python programmers - are usually wrong when they guess about the
slowest part of a program. The only way to know is to measure.

ChrisA



More information about the Python-list mailing list