While循环中的for循环-For循环未遍历所有项

时间:2019-09-26 18:55:54

标签: python python-3.x loops for-loop while-loop

我有一个for循环的while循环。 for循环遍历所有vel值,而while循环为每个b值计算等效的vel值。通过增加b的值,直到在另一组代码中满足特定要求(len([*filter(lambda x: x < 1, radii)]) > 0)为止,它才起作用。当我运行代码时,它仅确定b列表中第一项的vel值。我该如何解决?

def wtf():
    vel = np.arange(0, 1, 0.01)
    b = 0.1
    bvalues = [b]
    for i in vel:
        print("for velocity = " +str(i))
        radii = calcCoords(1, b, i)[1]
        while len([*filter(lambda x: x < 1, radii)]) > 0:
            b += 0.01
            radii = calcCoords(1, b, i)[1]
            print (b)
        return(b)
        bvalues.append(b)
    print(bvalues, vel)
    return (bvalues, vel)

1 个答案:

答案 0 :(得分:1)

for循环的主体中无条件返回。

def wtf():
    vel = np.arange(0, 1, 0.01)
    b = 0.1
    bvalues = [b]
    for i in vel:
        print("for velocity = " +str(i))
        radii = calcCoords(1, b, i)[1]
        while len([*filter(lambda x: x < 1, radii)]) > 0:
            b += 0.01
            radii = calcCoords(1, b, i)[1]
            print (b)
        return(b)  # <- This is why the for loop runs only once
        bvalues.append(b)
    print(bvalues, vel)
    return (bvalues, vel)

while循环一旦运行一次,它就会命中return,而其余for迭代都不会运行-您的函数将返回。