迭代for循环?

时间:2019-01-08 14:59:13

标签: python iteration

在Python中是否可以迭代for循环,并且这种构造的代码是什么样的?

要清楚,这是我迭代for循环的意思:

for i in range(100):
     for j in range(100):
         for k in range(100):
...
             for n in range(100):
                  print(i+j+k+...+n)

这是我想简化的一个具体示例:

data0=numpy.random.normal(0,1,100)
data1=numpy.random.normal(0,1,100)
data2=numpy.random.normal(0,1,100)
A=numpy.zeros(100*100*100)
for i in range(len(data0)):
    for j in range(len(data1)):
        for k in range(len(data2)):
             A[i*len(data0)*len(data1)+j*len(data0)+k]=data[i]+data[j]+data[k]

有可能吗?

1 个答案:

答案 0 :(得分:0)

看起来是在要求一种称为Loop Unrolling的优化。为此,您需要从最低的嵌套级别开始(可能是确定性的)查看优化。

在这种情况下,这是不可能的。通常,此循环在某种意义上相当于设置张量A[i,j,k] = d0[i]+d1[j]+d2[k];的每个元素,这是一对多的操作。

但是,如果数据向量data0data1data2中存在规则模式,则可以利用一些可能有用的启发式方法。不过,在这种情况下,您已经将它们设置为随机向量,因此没有关于组织或结构的基础假设有用。