【问题标题】:While loop in for loop - For loop does not go through all itemswhile 循环中的 for 循环 - For 循环不会遍历所有项目
【发布时间】:2019-09-26 18:55:54
【问题描述】:

我有一个带有 for 循环的 while 循环。 for 循环遍历所有vel 值,while 循环为每个vel 值计算等效的b 值。它通过增加 b 的值来达到此目的,直到它在不同的代码集中满足某个要求 (len([*filter(lambda x: x < 1, radii)]) > 0)。当我运行代码时,它只确定vel 列表中第一项的b 值。我该如何解决这个问题?

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)

【问题讨论】:

  • return(b) 从函数返回。
  • 非常感谢!!!如果我删除它,那会得到我想要的结果吗?
  • 我不知道你想要的结果是什么。但是,至少,它会继续循环遍历vel 的所有元素。

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


【解决方案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 迭代不会运行 - 您的函数会返回。

【讨论】:

  • 对不起,这是一个相当基本的错误,但这非常有帮助,谢谢!!!因此,如果我删除它,我会得到一个 b 列表,列表中的每个项目都是与 vel 列表等效的 b 值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 2020-11-17
  • 1970-01-01
  • 2016-01-26
  • 2021-12-25
相关资源
最近更新 更多