【问题标题】:Python Expression that returns a value if condition is met but otherwise continues a for loopPython 表达式,如果满足条件则返回一个值,否则继续一个 for 循环
【发布时间】:2020-06-16 10:53:23
【问题描述】:

这听起来像是一个愚蠢而可怕的想法,这可能是因为它是。 Python中有没有办法(最好是单行)创建一个表达式,如果满足条件,则解析为一个值,但如果不满足条件,它将改为执行语句(例​​如continue 还是方法调用)?

下面的示例用例(尽管此代码实际上不起作用):

def print_name_if_even(n):
    print(f"{ name if n % 2 == 0 else print("Uneven!") }")

我知道这可能是个坏主意,但我正在挑战尽可能少地填充函数定义,所以我想避免多行条件语句。

【问题讨论】:

  • 您所面临的挑战称为代码高尔夫,请务必查看包含 Python 打高尔夫球技巧的页面:codegolf.stackexchange.com/questions/54/…
  • 用单引号 'Uneven' 包裹 "Uneven" 并删除嵌套打印 print(f"{ name if n % 2 == 0 else 'Uneven!' }")
  • @lazos 抱歉,我举了一个使用 print 方法的坏例子。我的问题更多是指另一种情况,如果条件为假,我想运行continue 方法。
  • 继续不是一种方法。
  • 你没有迭代任何东西 - 怎么会继续在这里使用?

标签: python python-3.x ternary f-string pep


【解决方案1】:

你的意思是这样的?

def f():
    # <your statement>
    return 'yourstatement'

print ([f(), 'Even!'][False])

False 替换为计算结果为 True(=1) 或 False(=0) 的任何条件。 (这很好玩)。例如:

def f():
    # <your statement>
    return 'yourstatement'
n=2
print ([f(), 'Even!'][n%2 == 0])

【讨论】:

    猜你喜欢
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2022-07-21
    • 2021-09-30
    • 1970-01-01
    • 2010-11-13
    • 2022-06-15
    相关资源
    最近更新 更多