可能重复:
将一个简单的 if-then 语句放在一行上
我正在研究一个 python 表达式,我希望该表达式被压缩而不是使用 if else 语句。
s = [1, 2, 3, 4]
if len(s)>5:
print s.index(5)
else:
print 'cant print'
有没有比使用 as if else 语句更好的方法?
可能重复:
将一个简单的 if-then 语句放在一行上
我正在研究一个 python 表达式,我希望该表达式被压缩而不是使用 if else 语句。
s = [1, 2, 3, 4]
if len(s)>5:
print s.index(5)
else:
print 'cant print'
有没有比使用 as if else 语句更好的方法?
你可以做:
s = [1, 2, 3, 4]
print 'y' if len(s) > 5 else 'n'
但是我认为这不会使代码更具可读性(一目了然)。另请注意,if
不要else
创建循环,它们只是控制流的语句。循环是使用for
和编写的while
。
简短,但非常模糊(不要这样做):
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"
Short and clear:
s = [1, 2, 3, 4]
output = {True: 'y',False: 'n'}
print output[len(s) > 5]
另一种变化:
print len(s)>5 and 'y' or 'n'
只是为了完整性而添加的。不要在家里尝试这个!;-)