比在Python中使用if else语句更好的方法

better way than using if-else statement in python

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Putting a simple if-then statement on one line

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

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

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


你可以做到:

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

然而,我认为这并不能使代码更可读(一目了然)。还请注意,ifelse不创建循环,它们只是控制流的语句。循环是使用forwhile编写的。


简短,但非常模糊(不要这样做):

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

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

1
s_is_long = len(s) > 5

然后,您可以使用任何更合适的方法来书写打印,例如:

1
print 'y' if s_is_long else 'n'

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

或者是最易读的…

1
2
3
4
if s_is_long:
    print 'y'
else:
    print 'n'


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

1
2
3
4
try:
    print s.index(5)
except ValueError:
    print"5 not in list"


简明扼要:

1
2
3
s = [1, 2, 3, 4]
output = {True: 'y',False: 'n'}
print output[len(s) > 5]


另一个变化:

1
print len(s)>5 and 'y' or 'n'

只是为了完成添加。别在家里试这个!;-)