我有一个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)
答案 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
迭代都不会运行-您的函数将返回。