替代(更快)的战争到3嵌套的循环python

Pie*_*olo 5 python

我怎样才能更快地完成这个功能?(我称之为很多时间,可能会提高速度)

def vectorr(I,  J,  K):
    vect = []
    for k in range(0,  K):
        for j in range(0, J):
            for i in range(0, I):
                vect.append([i, j, k])
    return vect
Run Code Online (Sandbox Code Playgroud)

Art*_*nka 7

您可以尝试查看itertools.product

等效于生成器表达式中的嵌套for循环.例如,乘积(A,B)与A中的x的((x,y)相同,对于B中的y,返回相同的值).

嵌套循环像里程表一样循环,最右边的元素在每次迭代时前进.此模式创建了一个词典排序,以便在输入的可迭代内容进行排序时,产品元组按排序顺序发出.

调用范围(0,I)等时也不需要0 - 只使用范围(I)

所以在你的情况下它可以是:

import itertools

def vectorr(I,  J,  K):
    return itertools.product(range(K), range(J), range(I))
Run Code Online (Sandbox Code Playgroud)

  • 对于几乎任何带有"python"和"loop"字样的问题,最好的答案就是"itertools". (4认同)
  • 折叠到列表可能是一个坏主意 - 返回生成器表达式可能更好 (2认同)