优化Python中的循环

时间:2015-08-11 13:02:23

标签: python

我正在通过遵循tutorial(循环部分)来优化我的Python程序。 根据教程,地图功能可以在速度方面产生更好的结果。

我想调整下面的代码以改进它:

for iphi in xrange(0, NBPHI):
    for ith in xrange(0, NBTHETA):
        for i in xrange(0, NLAM):
          tabFinal[0*NBTHETA*NBPHI*NLAM+i*NBTHETA*NBPHI+iphi*NBTHETA+ith] = (tabPhotonsTot[0*NBPHI*NBTHETA*NLAM+i*NBTHETA*NBPHI+ith*NBPHI+iphi] + tabPhotonsTot[1*NBPHI*NBTHETA*NLAM+i*NBTHETA*NBPHI+ith*NBPHI+iphi])

for iang in xrange(1, phase.N):
    dtheta = phase.ang[iang]-phase.ang[iang-1]

1 个答案:

答案 0 :(得分:1)

你可以在最里面的循环中分解你正在做的很多算术。 (变量名称很糟糕,但这只是一个例子。)而不是在那里进行大量的乘法,你只需要做一个和一些加法。

Z1 = NBTHETA * NBPHI
Z4 = Z1 * NLAM
for iphi in xrange(0, NBPHI):
    Z2 = iphi * NBTHETA
    for ith in xrange(0, NBTHETA):
        Z3 = ith * NBPHI
        Z5 = Z3 + iphi
        Z6 = Z2 + ith
        Z7 = Z4 + Z5
        for i in xrange(0, NLAM):
             Z8 = i * Z1
             tabFinal[Z8 + Z6] = (tabPhotonsTot[Z8 + Z5] +
                                       tabPhotonsTot[Z7 + Z8])