sam*_*sam 9 python if-statement
可能重复:
在一行上放置一个简单的if-then语句
我正在处理一个python表达式,我想要压缩该表达式而不是使用if else语句.
s = [1, 2, 3, 4]
if len(s)>5:
print s.index(5)
else:
print 'cant print'
Run Code Online (Sandbox Code Playgroud)
有没有比使用else else语句更好的方法?
Sim*_*ser 14
你可以做:
s = [1, 2, 3, 4]
print 'y' if len(s) > 5 else 'n'
Run Code Online (Sandbox Code Playgroud)
但是我不认为这会使代码更具可读性(一目了然).另请注意,if并且else不创建循环,它们只是控制流的语句.循环使用for和编写while.
the*_*orn 11
简短,但非常混淆(不要这样做):
print 'ny'[len(s) > 5]
Run Code Online (Sandbox Code Playgroud)
[编辑]你永远不应该这样做的原因,是因为它使用了大多数人都不知道的语言属性,即bool是int的子类.在您发现自己编写类似OP的代码的大多数情况下,通常最好创建一个标志变量
s_is_long = len(s) > 5
Run Code Online (Sandbox Code Playgroud)
那么你可以使用任何更合适的方式来编写打印,例如:
print 'y' if s_is_long else 'n'
Run Code Online (Sandbox Code Playgroud)
要么
print {True: 'y', False: 'n'}[s_is_long]
Run Code Online (Sandbox Code Playgroud)
或者最可读的......
if s_is_long:
print 'y'
else:
print 'n'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以使用try/except块:
try:
print s.index(5)
except ValueError:
print "5 not in list"
Run Code Online (Sandbox Code Playgroud)