比使用if更好的方法

可能重复:
将简单的if-then语句放在一行上

我正在处理一个python表达式,并且我希望该表达式比使用if else语句进行压缩。

s = [1, 2, 3, 4]
if len(s)>5:
    print s.index(5)
else:
    print 'cant print'

有没有比使用if语句更好的方法?


你可以做:

s = [1, 2, 3, 4]
print 'y' if len(s) > 5 else 'n'

不过,我认为这不会让代码更具可读性(一目了然)。 还要注意的是ifelse不创建一个循环,他们只是用于控制流语句。 循环是使用forwhile编写的。


简短但很混乱(不要这样做):

print 'ny'[len(s) > 5]

[编辑]你永远不应该这样做的原因是因为它使用了大多数人都不知道的语言属性,也就是说bool是int的一个子类。 在大多数情况下,如果你发现自己编写像OP这样的代码,通常最好创建一个标志变量

s_is_long = len(s) > 5

那么你可以使用任何更合适的方式来书写印刷品,例如:

print 'y' if s_is_long else 'n'

要么

print {True: 'y', False: 'n'}[s_is_long]

或所有可读性最高的...

if s_is_long:
    print 'y'
else:
    print 'n'

在这种情况下,您可以使用try / except块:

try:
    print s.index(5)
except ValueError:
    print "5 not in list"
链接地址: http://www.djcxy.com/p/42717.html

上一篇: better way than using if

下一篇: Putting an if