Python中断,但返回或存储当前值

Python中断,但返回或存储当前值,python,numpy,for-loop,break,Python,Numpy,For Loop,Break,如何实现带有中断的for循环,该中断还返回中断处的值 x = np.empty(1) x[0] = 0.4 f = np.array([3,2,1,0,1,2,3]) y = np.empty(0) for i in range(len(f)): if f[i+1] < f[i]: newx = x[i]*2 y = np.append(y,f[i+1]) x = np.append(x,newx) else:

如何实现带有中断的for循环,该中断还返回中断处的值

x = np.empty(1)

x[0] = 0.4

f = np.array([3,2,1,0,1,2,3])
y = np.empty(0)

for i in range(len(f)):
    if f[i+1] < f[i]:
        newx = x[i]*2
        y = np.append(y,f[i+1])
        x = np.append(x,newx)
    else:
        break

这将返回y=[2,1,0]和x=[0.4,0.8,1.6,3.2],但我希望它也返回y=1和x=6.4的值,这将是下一次迭代。

尝试以下方法:

for i in range(len(f) - 1):        
    newx = x[i]*2
    y = np.append(y,f[i+1])
    x = np.append(x,newx)

    if f[i+1] > f[i]:
        break
for i in range(len(f)):
    if f[i+1] < f[i]:
        newx = x[i]*2
        y = np.append(y,f[i+1])
        x = np.append(x,newx)
    else:
        y = np.append(y,f[i+1])
        x = np.append(x,newx)
        break

此代码段还将在中断循环之前追加下一次迭代。

尝试向else块添加代码,如下所示:

for i in range(len(f) - 1):        
    newx = x[i]*2
    y = np.append(y,f[i+1])
    x = np.append(x,newx)

    if f[i+1] > f[i]:
        break
for i in range(len(f)):
    if f[i+1] < f[i]:
        newx = x[i]*2
        y = np.append(y,f[i+1])
        x = np.append(x,newx)
    else:
        y = np.append(y,f[i+1])
        x = np.append(x,newx)
        break

这可能是一项锻炼。

只需添加一个新条件

x = np.empty(1)
x[0] = 0.4
f = np.array([3,2,1,0,1,2,3])
y = np.empty(0)
for i in range(len(f)):
    if f[i+1] < f[i]:
        newx = x[i]*2
        y = np.append(y,f[i+1])
        x = np.append(x,newx)
    elif f[i+1]>f[i] and f[i]==0:
        newx = x[i] * 2
        y = np.append(y, f[i + 1])
        x = np.append(x, newx)
    else:
        break

return本身打破了循环为什么你需要显式break我想你只需要一个print语句:在返回或中断useprint之前,如果你想存储它,请告诉我。。我会帮你写代码谢谢你的快速回复@AkshayNevrekar明确的休息怎么起作用?这里对python有些陌生。@puneethinha是的,我正在存储值!含糖的这很有效。谢谢你的快速回复。我想这是一个简单的解决办法。对python plus来说有些陌生,因为它已经在这个项目上工作了太多小时。f[i+1]在某些情况下会触发索引错误,这取决于inputs@MenglongLi编辑后转到lenf-1以避免索引错误。@MenglongLi为什么?这与我的代码最初遇到的问题相同。