这个问题的答案之一是
print len(s)>5 and 'y' or 'n'
print(len(s)>5 and 'y' or 'n') #python3
Run Code Online (Sandbox Code Playgroud)
如果长度s > 5,则'y'打印否则'n'是.请解释这是如何工作的原因.谢谢.
我知道这不是推荐的方法,但我想了解它的工作原理.
Ned*_*der 15
这是一个老式的黑客.新的方式是:
print 'y' if len(s) > 5 else 'n'
Run Code Online (Sandbox Code Playgroud)
它起作用的原因是因为"A和B"将评估A,如果是,则评估为B.但如果A为假,则不需要评估B.同样,"C或D"将评估C,如果是假,将继续评估为D.
因此"A和B或C"与"(A和B)或C"相同.如果A为真,则它将评估B.如果A为假,则"(A和B)"为假,因此它将评估C.
正如Voo在注释中指出的那样,A的值不一定是True或者是False任何表达式,并且将被Python的规则解释为布尔值(0,无,空容器是假的,其他一切都是真的).
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |