2024-04-28 13:45:53 发布
网友
我想运行一个函数,在列表中生成测温代码。当我输入大范围的函数需要很多时间-
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
正确地。。。你知道吗
在python3中的代码不应该出现内存问题。我试过了(把xrange()改成range()),在12秒内得到了响应。你知道吗
xrange()
range()
你可以这样写函数:
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]。你知道吗
thermoArray(i)
thermoArray[i]
使用xrange和列表理解确实降低了for循环的慢度。我还减少了最大值为0x3fff,这似乎给我所有需要的值。你知道吗
在python3中的代码不应该出现内存问题。我试过了(把
xrange()
改成range()
),在12秒内得到了响应。你知道吗你可以这样写函数:
这实际上允许您完全避免生成列表。如果要将结果放入数组中:
您只需创建一个函数,并像引用数组中的索引一样使用它:
在代码中使用
thermoArray(i)
而不是thermoArray[i]
。你知道吗使用xrange和列表理解确实降低了for循环的慢度。我还减少了最大值为0x3fff,这似乎给我所有需要的值。你知道吗
相关问题 更多 >
编程相关推荐