首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >更快、更高效地运行大量for循环

更快、更高效地运行大量for循环
EN

Stack Overflow用户
提问于 2019-05-12 22:09:39
回答 2查看 54关注 0票数 -4

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

代码语言:javascript
复制
    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,我尝试过列表理解,但似乎不能包括-

代码语言:javascript
复制
 code = code*8+7 

适当地..。

EN

回答 2

Stack Overflow用户

发布于 2019-05-13 01:13:04

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

票数 0
EN

Stack Overflow用户

发布于 2019-06-04 04:26:43

在Python3中,你的代码应该不会遇到内存问题。我尝试了一下(将xrange()改为range()),并在12秒内得到了响应。

您可以像这样编写函数:

代码语言:javascript
复制
def Thermo_Only(n): 
    return [ (1<<i)-1 for i in range(0,3*n,3) ]

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

代码语言:javascript
复制
thermoArray = Thermo_Only(n)

您可以简单地创建一个函数,并像引用数组中的索引一样使用它:

代码语言:javascript
复制
def thermoArray(n): return (1<<(3*n))-1

并且在代码中使用thermoArray(i)而不是thermoArray[i]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56100052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档