поместите оператор "разбить условие IF" в одну строку - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу написать оператор, который выходит из цикла for, если определенное условие выполнено, но в одну строку.

Я знаю, что это работает:

for val in "string":
    if val == "i":
        break
    print(val)

и я знаю, что это работает:

value_when_true if condition else value_when_false

, но когда я запускаю этот фрагмент кода, я получаю синтаксическую ошибку:

break if some_string[:5] == condition

Есть ли способнаписать такое условие разрыва в одну строку?Может я что-то не так делаю?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Это сработало для меня:

for i in range(10):
  print(i)
  if i == 2: break
0 голосов
/ 11 февраля 2019

Нет ничего плохого в написании кода ниже

for val in "string":
    if val == "i":
        break

Однострочники не приносят пользы, но все операции сведены в одну строку, которую трудно прочитать.

value_when_true if condition else value_when_false Это хорошо, только если у тебя есть выражение.Например,

x = 1 if True else 0

Поскольку break не является выражением, его нельзя использовать, как указано выше

if condition: break прервет цикл.Но опять же, я бы посоветовал сохранить ваш оригинальный код, чтобы он был более читабельным.

0 голосов
/ 11 февраля 2019

Вы не можете использовать троичное выражение, потому что break не является выражением.

Хотя вы можете просто пропустить перевод строки следующим образом.

for val in "string":
    if val == "i": break
    print(val)
...