我有两个嵌套循环需要很长时间。有什么方法可以让它更快吗?
这是我的代码:
for i in range (start, start+fin):
for j in range (0, start+fin):
tuple = ( i, j , matrice[i][j], tf)
listeA.append(tuple)
for i in range (0, start):
for j in range (start, start+fin):
tuple = ( i, j , matrice[i][j], tf)
listeA.append(tuple)
感谢您的帮助。
答案 0 :(得分:0)
不是真的。它们可能需要很长时间,因为它们会迭代很多次。
答案 1 :(得分:0)
它是O(N ^ 2),所以本质上它对大型数据集来说很慢。你在这里有两个非常相似的循环,我不太清楚为什么你会以这种方式迭代它们,但是可能有一种更聪明的方法来绕过它,这样你就不必拥有两个嵌套循环。很难说没有更大的图片。
那就是说 - 使用map()或列表推导可能会比普通的旧版略微提升。
答案 2 :(得分:0)
首先,您不需要将元组存储在变量中,您可以将其直接存储到列表中。 其次,在矩阵上循环一次。 类似的东西:
for i in range(vertical):
for j in range(diagonal):
listeA = (i, j, matrice[i][j])
将range()中的变量更改为fit。 此外,在Python中,不建议构建自己的数据结构。你不需要重新发明矩阵。 您可以使用numpy.matrix