我必须对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),我需要减少它。
答案 0 :(得分:0)
对于Python 2.x xrange比range更快,通常(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
因为名字查找需要一些时间