Python - 如何对用或/和运算符分隔的变量进行分组

2 投票
3 回答
761 浏览
提问于 2025-04-16 14:18

我正在寻找一种方法,让下面这段(示例)代码看起来更优雅:

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。当允许的值很多,或者这些值在运行时可能会变化时,这种方法是最好的选择。

撰写回答