在for循环中循环-For循环未遍历所有项目

问题描述 投票:-1回答:1

我有一个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)
python python-3.x loops for-loop while-loop
1个回答
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迭代都不会运行-您的函数将返回。

© www.soinside.com 2019 - 2024. All rights reserved.