[Python-ideas] Extremely weird itertools.permutations
Tim Peters
tim.peters at gmail.com
Tue Oct 15 04:45:33 CEST 2013
One example of prior art: Maxima, which I use in its wxMaxima incarnation.
"""
Function: permutations(a)
Returns a set of all distinct permutations of the members of the list
or set a. Each permutation is a list, not a set.
When a is a list, duplicate members of a are included in the permutations
"""
Examples from a Maxima shell:
> permutations([1, 2. 3]);
{[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]}
> permutations([[1, 2], [1, 2], [2, 3]])
{[[1,2],[1,2],[2,3]],
[[1,2],[2,3],[1,2]],
[[2,3],[1,2],[1,2]]}
> permutations({1, 1.0, 1, 1.0})
{[1,1.0],[1.0,1]}
That last one may be surprising at first, but note that it's the first
example where I passed a _set_ (instead of a list). And:
> {1, 1.0, 1, 1.0}
{1,1.0}
Best I can tell, Maxima has no builtin function akin to our
permutations(it, r) when r < len(it). But Maxima has a huge number of
builtin functions, and I often struggle to find ones I _want_ in its
docs ;-)
More information about the Python-ideas
mailing list