【问题标题】:fit "break IF condition" statement into one line将“break IF 条件”语句放入一行
【发布时间】:2019-07-05 08:29:27
【问题描述】:

我想写一个语句,如果满足某个条件,则跳出 for 循环,但在一行中。

我知道这行得通:

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

我知道this 有效:

value_when_true if condition else value_when_false

但是当我运行这段代码时,我得到一个语法错误:

break if some_string[:5] == condition

有没有办法在一行中写出这样的中断条件?我是不是做错了什么?

谢谢!

【问题讨论】:

  • 可以break 与条件放在同一行:if val == "i": break

标签: python python-3.x for-loop break


【解决方案1】:

您不能使用三元表达式,因为break 不是表达式:它不返回值。

不过,您可以像这样简单地省略换行符。

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

【讨论】:

  • 另外,这还不足以成为答案的一部分,但你可以玩得开心,做for val in takewhile('i'.__ne__, "string"): print(val)
【解决方案2】:

写下面的代码没有坏处

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 将打破循环。但我再次建议您保留原始代码,因为它更具可读性。

【讨论】:

    【解决方案3】:

    这对我有用:

    for i in range(10):
      print(i)
      if i == 2: break
    

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 2014-02-21
      • 1970-01-01
      • 2022-05-21
      • 2021-04-27
      • 1970-01-01
      • 2015-08-18
      • 2014-01-07
      • 2019-06-16
      相关资源
      最近更新 更多