在Python中生成列表的所有排列时列表中的最大元素数

The maximum number of element in a list when generate all the permutations of a list in Python

我正在使用 itertools 生成 Python 列表的所有排列

import itertools
lt = [0,1,2,3]
print list(set(itertools.permutations(lt)))

当列表长度小于7时效果很好,当列表长度大于7([0,1,2,3,4,5,6,7])时,需要一个很多时间来生成所有的排列,程序被冻结了。所以我想知道是否有任何方法可以生成一个大列表的所有排列,谢谢!

itertools return 一台发电机 ns 时间。转换速度很慢 set()

8!

>>> lt = [i for i in xrange(8)]
>>> %timeit itertools.permutations(lt)
1000000 loops, best of 3: 547 ns per loop

>>> %timeit set(itertools.permutations(lt))
100 loops, best of 3: 13.4 ms per loop

>>> %timeit list(set(itertools.permutations(lt)))
10 loops, best of 3: 19.1 ms per loop

>>> %timeit list(itertools.permutations(lt))
100 loops, best of 3: 4.9 ms per loop

9! = 362880

>>> lt = [i for i in xrange(9)]

>>> %timeit itertools.permutations(lt)
1000000 loops, best of 3: 557 ns per loop

>>> %timeit set(itertools.permutations(lt))
1 loops, best of 3: 167 ms per loop

>>> %timeit list(set(itertools.permutations(lt)))
1 loops, best of 3: 186 ms per loop

>>> %timeit list(itertools.permutations(lt))
10 loops, best of 3: 61.9 ms per loop

for循环相比生成一个长度为(362880)的列表

>>> %timeit list(i for i in xrange(362880))
10 loops, best of 3: 33 ms per loop

我认为性能相当不错。 顺便说一句,我正在使用 python2.7