计算生成器在python中的成员资格搜索的执行时间

问题描述 投票:0回答:1

我目前正在使用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的生成器对象!价值观。实际上,此代码...

python time generator itertools
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.