Python长嵌套循环

时间:2017-11-10 15:05:39

标签: python for-loop nested

我有两个嵌套循环需要很长时间。有什么方法可以让它更快吗?

这是我的代码:

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)

感谢您的帮助。

3 个答案:

答案 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