gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:38:54 25 4
gpt4 key购买 nike

我正在使用 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])时,需要很多生成所有排列的时间,并且程序被卡住。所以我想知道是否有什么方法可以生成一个大列表的所有排列,谢谢!

最佳答案

itertoolsns 时间内返回生成器。 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

关于python - Python中生成列表的所有排列时列表中元素的最大数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31176253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com