如何实现单个变量与多个指定值做相等比较时均返回True?
实现方案
你之前的写法返回False的原因很简单:Python中列表和字符串属于不同数据类型,直接做==相等比较时会直接返回False,不会自动判断字符串是否属于列表元素。你可以根据使用场景选择下面的方案:
方案1:不区分大小写比较(最常用)
如果只是要判断输入的字符是否是不区分大小写的y,直接统一转大小写后比较即可:
x = "Y" # 统一转小写后比较 print(x.lower() == "y") # 输出 True # 也可以统一转大写 print(x.upper() == "Y") # 输出 True
方案2:成员运算判断
如果允许的取值不止两个,你可以把合法值存为集合/列表,用in运算符判断:
allowed = {"y", "Y"} x = "y" print(x in allowed) # 输出 True x = "Y" print(x in allowed) # 输出 True
方案3:自定义相等逻辑(满足你要求的x == "y"/"Y"直接返回True的语法)
如果你确实需要实现直接用==和两个字符串比较都返回True的效果,可以自定义类重写相等判断方法:
class CharMatcher: def __eq__(self, other): return isinstance(other, str) and other.lower() == "y" x = CharMatcher() print(x == "y") # 输出 True print(x == "Y") # 输出 True
内容的提问来源于stack exchange,提问作者New Learner
相关产品推荐
相关产品推荐

