快速/高效地运行大量for循环的方法

2024-04-28 13:45:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想运行一个函数,在列表中生成测温代码。当我输入大范围的函数需要很多时间-

    def Thermo_Only(bit_size):
        lst=[]
        code=0
        for bit in xrange(bit_size):
            lst.append(code)
            code = code*8+7
        return(lst)

当输入为0x3ffff时,我使用Pyscripter接收MemoryError 我试过列表理解,但似乎不能包括-

 code = code*8+7 

正确地。。。你知道吗


Tags: 函数代码inonly列表forsizethermo
2条回答

在python3中的代码不应该出现内存问题。我试过了(把xrange()改成range()),在12秒内得到了响应。你知道吗

你可以这样写函数:

def Thermo_Only(n): 
    return [ (1<<i)-1 for i in range(0,3*n,3) ]

这实际上允许您完全避免生成列表。如果要将结果放入数组中:

thermoArray = Thermo_Only(n)

您只需创建一个函数,并像引用数组中的索引一样使用它:

def thermoArray(n): return (1<<(3*n))-1

在代码中使用thermoArray(i)而不是thermoArray[i]。你知道吗

使用xrange和列表理解确实降低了for循环的慢度。我还减少了最大值为0x3fff,这似乎给我所有需要的值。你知道吗

相关问题 更多 >