我目前正在使用python中的生成器和阶乘。举个例子:itertools.permutations(range(100))
意思是,我收到一个包含100的发电机对象!值。
实际上,这段代码确实看起来有些复杂;我使用的是子列表而不是range(100),目的是找到满足我条件的那些子列表的组合。
这是代码:
mylist = [[0, 0, 1], ..., [5, 7, 3]] # random numbers
x = True in (combination for combination in itertools.permutations(mylist)
if compare(combination))
# Compare() does return True for one or a few combination in that generator
我意识到这非常耗时。有没有一种[[更有效]]的方法来做到这一点,而且还有一种方法[将要花费?]我已经使用ipython完成了%timeit:%timeit (combination for combination in itertools.permutations(mylist) if compare(combination))
--> 697 ns
%timeit (combination for combination in itertools.permutations(range(100)) if compare(combination))
--> 572 ns
[注:我确实知道,当生成器被“消耗”时,它只是被创建,这意味着需要首先执行生成器理解,才能完全启动其生成器。
我看过很多教程来解释生成器是如何工作的,但是我对执行时间一无所知。此外,我不需要确切的值,例如在程序中使用时间模块计时执行时间,因此我需要一个粗略的值[[before执行。
编辑:我还针对较小的值
,包含24个子列表,10个子列表和5个子列表的列表进行了测试。这样做,我收到一个即时输出
。这意味着程序可以正常工作,只是时间问题。我的问题是(说得更清楚):需要多少时间,并且:是否有较少的耗时方法来做到这一点?我目前正在使用python中的生成器和阶乘。例如:itertools.permutations(range(100))含义,我收到一个包含100的生成器对象!价值观。实际上,此代码...