Python - 如何对用或/和运算符分隔的变量进行分组
我正在寻找一种方法,让下面这段(示例)代码看起来更优雅:
if answer == "yes" or "Yes" or "Y" or "y" or "why not":
print("yeah")
就像在英语中你不会这样说:
可能的答案是yes或者Yes或者Y或者why not。
而是更倾向于这样说:
可能的答案是yes、Yes、Y或者why not。
那么,怎样做会更优雅呢?
提前谢谢大家!!
3 个回答
1
下面的代码做的事情是一样的:
if answer in ["yes", "Yes", "Y", "y", "why not"]:
print "yeah"
3
你可以使用 in
操作符 来检查一个元素是否在列表里面:
if answer in ["yes", "Yes", "Y", "y", "why not"]:
print("yeah")
6
选项1:answer in ["yes", "Yes", "Y", "y", "why not"]
... 这个主意不好,因为每次运行的时候都会重新创建一个列表。
选项2:answer in ("yes", "Yes", "Y", "y", "why not")
... 这个主意更好,因为这个(常量,不可改变的)元组是在编译时就创建好的。
选项3:先这样做一次:
allowables = set(["yes", "Yes", "Y", "y", "why not"])
然后每次需要的时候用 answer in allowables
。当允许的值很多,或者这些值在运行时可能会变化时,这种方法是最好的选择。