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

时间:2012-07-15 12:35:45

标签: python if-statement

  

可能重复:
  Putting a simple if-then statement on one line

我正在处理一个python表达式,我希望压缩表达式而不是使用if else语句。

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

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

5 个答案:

答案 0 :(得分:14)

你可以这样做:

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

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

答案 1 :(得分:11)

简短,但非常混淆(不要这样做):

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

[edit]你永远不应该这样做的原因,是因为它使用了大多数人都不知道的语言属性,即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'

答案 2 :(得分:7)

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

try:
    print s.index(5)
except ValueError:
    print "5 not in list"

答案 3 :(得分:3)

简短明了:

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

答案 4 :(得分:0)

另一种变化:

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

刚刚添加完整性。不要在家尝试这个! ; - )