Python条件表达式,带有一个分支而不是两个

时间:2017-12-23 13:07:45

标签: python python-3.6

对于没有斜杠的文件名(例如s = 'arbabababtybab' o = [s[i:i+3] for i in range(len(s)-2) if s[i:i+3] == 'bab'] n = len(o) ),以下lambda会返回empty ""

"local.txt"

我想确保(用非常简洁的语法)lambda总是返回一个正确的目录名,即lambda filename: os.path.dirname(filename) 而不是"."

这样做的方式比以下更简洁:

""

如果lambda filename: os.path.dirname(filename) if os.path.dirname(filename) != "" else "." 不必指定(甚至可能被评估)两次,那将是很好的。

是一个带有一个分支而不是两个分支的条件表达式(如果存在这样的构造)

1 个答案:

答案 0 :(得分:1)

利用or的合并行为:

lambda filename: os.path.dirname(filename) or "."