Продолжить внешний цикл при выполнении условия во внутреннем цикле
Вот код:
s=int(input())
matrix=[input().split() for i in range(s)]
print(matrix)
for i in range(s):
for j in range(s):
if matrix[i][j]==matrix[i][i]:
continue
Вопрос: как применить continue к внешнему циклу при выполнении условия?
Ответы (2 шт):
for i in range(s):
for j in range(s):
if matrix[i][j]==matrix[i][i]:
break
else:
# мы окажемся здесь, если break не случился
continue
# мы окажемся здесь, если break случился
continue
Хочется отметить, что вариант:
for i in range(s):
for j in range(s):
if matrix[i][j]==matrix[i][i]:
break
else:
continue
не сработает, так как при выходе из цикла через break блок else не выполняется. К сожалению, не могу ответить в комментарии, поэтому отмечаю тут.
Далее, вопрос выглядит не до конца раскрытым, ведь чтобы имело смысл делать continue во внешнем цикле for, нужно, чтобы там был какой-то код, типа:
for i in range(s):
for j in range(s):
if matrix[i][j]==matrix[i][i]:
break
some_method()
Далее - можно даже использовать переменную j после внешнего цикла, так как она сохраняется, единственное - она может быть не проинициализирована, если вдруг цикл по j будет пустым:
for i in range(3):
for j in range(3):
if matrix[i][j]==matrix[i][i]:
break
if matrix[i][j] == matrix[i][i]:
continue
some_method()
Последнее, что хотел отметить - в данном коде всегда будет выполняться условие matrix[i][j]==matrix[i][i] в тривиальном случае - когда j=i, следовательно, каждый цикл по j он будет выходить во внешний, и каждый раз будет выполняться внешнее условие, и вызов some_method() никогда не сработает. Если это учебный код, то кажется, что он не слишком наглядный.