使我的python程序更有效率

时间:2016-07-26 10:10:12

标签: python performance

我必须对2D平面中的2个索引进行求和,并且在空间中的每个点上,我必须得到函数的值。

最简单的方法和我知道如何做的唯一方法是使用4 for循环。它运作良好,但速度极慢。你有什么消化方法可以更快地完成。

请注意,“size”定义我正在使用的步骤,并且是我的sistem以任意单位的大小,“n_0”是列表列表,是一个输入参数,它也取决于y中的坐标x。 / p>

for x in range(size):
    for y in range(size):
        for x_ in range(size):
            for y_ in range(size):
                if x == x_ and y == y_:
                    pass
                else:
                    value = n_0[x][y] * N / math.sqrt((x - x_)**2 + (y - y_)**2)
                    print(value)
编辑:我不知道为什么这个被标记为重复,因为我的问题并不是我的语法更简洁。我的问题是,无论语法是什么,代码都是O(n ^ 4),我需要减少它。

1 个答案:

答案 0 :(得分:0)

对于Python 2.x xrangerange更快,通常(2.x和3.x)更快

i=start
while i<stop:
    #do something
    i+=1

而不是

for i in range(start,stop):
    #do something

因为for循环会做更复杂的事情。

也可以(稍微)更快地完成

import a
c=[]

def f():
    a_b_local=a.b
    c_local=c
    #some loop with a_b_local and c_local

import a
c=[]

def f():
    #some loop with a.b and c

因为名字查找需要一些时间