разрыв внешнего цикла Python for на основе условия во внутреннем цикле for - PullRequest
0 голосов
/ 18 мая 2018

Я использую приведенный ниже код.

for x in range(100):
        print('inside 1st loop')
        for y in range(25,60):
            print('inside second loop')
            if y >= x:
            print ('y is now greater than x')

Возможно ли, что как только условие if выполнено во внутреннем цикле for, внешний цикл прерывается, после запуска еще 5 внутренних циклов.

Фактический код такой, как показано ниже:

for i in range(len(a1)):
            title_derived = []
            print(i)
            for j in range(len(b1)):
                #print(b1.iloc[i][10], a1.iloc[j][3])
                if b1.iloc[j][10] == a1.iloc[i][3]:
                    print('1st if ' + str(j))
                    print (b1.iloc[j][1], a1.iloc[i][11], b1.iloc[j][5])
                    if (((pd.to_datetime(b1.iloc[j][1]) <= pd.to_datetime(a1.iloc[i][11]) <= pd.to_datetime(b1.iloc[j][5]))) or ((pd.to_datetime(b1.iloc[j][1]) <= pd.to_datetime(a1.iloc[i][8]) <= pd.to_datetime(b1.iloc[j][5])))) :
                        print('2nd if' + str(j))
                        title_derived.append(b1.iloc[j][15])
                        print('inserted ' + b1.iloc[j][15] + ' in ' + str(i) + ' th record ')
            a1.iat[i,65] = title_derived 

Теперь у меня есть два кадра данных, каждая запись в первом (приблизительные записи 10000) ищет каждую запись в другом кадре данных (40000 записей).Иногда может быть не более 4-5 последовательных записей, соответствующих условию.

Итак, когда условие удовлетворено во втором цикле, я хотел бы закончить еще пять итераций и прервать его.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Попробуйте добавить переменную состояния, чтобы указать, когда завершится внутренний цикл.

Обратите внимание, что ваш пример закончится сразу после 25> 0.

done = False
for x in range(100):
    if done is True:
        print('Inner loop is done')
        break

    print ('inside 1st loop')
    print x
    for y in range(25,60):
        print ('inside second loop')
        print y
        if y >= x:
            print ('y is now greater than x')
            done = True
            break
0 голосов
/ 18 мая 2018

При условии, что условие разорвет петлю, если внешняя переменная больше, чем внутренняя переменная -> разорвать петлю

def inner_loop_function(outer_loop_variable):
  for y in range(25,60):
    if y<=first_loop_var:
      return True
  return False

Внешний цикл

for x in range(0, 100):
  print("1st Loop", x)
  var = inner_loop_function(x)
  if var == True:
    # Breaking outer Loop
    break
...