Python Break но вернуть или сохранить текущее значение - PullRequest
0 голосов
/ 30 января 2019

Как реализовать цикл 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, которые будут следующей итерацией.

Ответы [ 3 ]

0 голосов
/ 30 января 2019

Попробуйте добавить код в свой блок else, например так:

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

Это может привести к тренировке.

0 голосов
/ 30 января 2019

Просто добавьте новое условие.

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
0 голосов
/ 30 января 2019

Попробуйте что-то вроде этого:

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

Этот фрагмент также добавит следующую итерацию до выхода из цикла.

...