如何在python中的循环内执行循环

2024-09-20 03:39:00 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我有一个程序,它通过一个向量坐标列表,对两个向量执行一个简单的数学函数,但我想在一个循环内循环,以便能够对发生的事情有更多的控制,这是我目前的程序:

import operator
import numpy as np
b = 0
a = 1
for a in range(0,56): 
    vector1 = (int(l[b][0]),int(l[b][1]),int(l[b][2]))
    vector2 = (int(l[a][0]),int(l[a][1]),int(l[a][2]))
#print vector1
#print vector2
    x = vector1
    y = vector2
vector3 = list(np.array(x) - np.array(y))
#print vector3
    dotProduct = reduce( operator.add, map( operator.mul, vector3, vector3))
    print dotProduct
    a += 1

但我想要的是,一旦a达到56,并完成最后一次运行,我希望B加上1,a重置回零,然后重做操作循环,直到B上升到55。

期望输出: 坐标示例:

特写46.7176 27.1121 27.1121

特写43.2505 36.0618 32.4879

特写43.3392 36.0964 28.9236

特写43.2509 37.8362 27.1091

特写34.4872 14.1794 16.5767

特写34.4103 16.0364 14.3521

特写:32.7006 14.069 14.412

我想让第一个坐标执行点积和它下面的所有内容,然后返回,然后从第二个坐标开始,执行点积和它下面的所有内容,等等。。


Tags: import程序内容列表nparray向量operator
3条回答

可以执行嵌套for循环。以下是您想要的:

for b in range(0, 56):
    for a in range(0, 57):

运行这个,看看你得到了什么(在你问另一个问题之前)

for b in range(56):
    for a in range(57):
        print "a:", a, "b:", b

对评论中问题的回答:

可以在内部循环中使用b作为参数

for b in range(56):
    for a in range(b+1, 57):
        print "a:", a, "b:", b

你可以用较小的范围在一个屏幕上查看所有结果

for b in range(6):
    for a in range(b+1, 7):
        print "a:", a, "b:", b

结果:

a: 1 b: 0
a: 2 b: 0
a: 3 b: 0
a: 4 b: 0
a: 5 b: 0
a: 6 b: 0
a: 2 b: 1
a: 3 b: 1
a: 4 b: 1
a: 5 b: 1
a: 6 b: 1
a: 3 b: 2
a: 4 b: 2
a: 5 b: 2
a: 6 b: 2
a: 4 b: 3
a: 5 b: 3
a: 6 b: 3
a: 5 b: 4
a: 6 b: 4
a: 6 b: 5

可以使用while循环而不是for循环:

b = 0
a = 0

while a <= 56 :
    import operator
    import numpy as np
    vector1 = (int(l[b][0]), int(l[b][1]), int(l[b][2]))
    vector2 = (int(l[a][0]),int(l[a][1]),int(l[a][2]))
    #print vector1
    #print vector2
    x = vector1
    y = vector2
    vector3 = list(np.array(x) - np.array(y))
    #print vector3
    dotProduct = reduce( operator.add, map( operator.mul, vector3, vector3))
    print dotProduct


    if a == 56 :
        b += 1
        a = 0
    else:        
        a += 1

    if b == 55:
        break

相关问题 更多 >