📜  python 不等于多个值 - Python (1)

📅  最后修改于: 2023-12-03 15:19:06.708000             🧑  作者: Mango

Python 不等于多个值

在 Python 中,我们可以使用 != 运算符来判断两个值是否不相等。但是,如果我们想要判断一个变量与多个值之一是否不相等,应该如何处理呢?

使用 not in

一个通用的解决方案是使用 not in 运算符。例如,如果我们想要判断一个变量 x 是否不等于 1、2、3 中的任意一个,可以这样写:

if x not in [1, 2, 3]:
    # do something

注意这里使用了列表来表示多个值,如果有很多值需要判断,可以考虑使用集合来提高效率:

if x not in {1, 2, 3, ..., 100}:
    # do something
使用 any()

Python 还提供了一个 any() 函数,可以判断一个变量是否与多个值中的任意一个相等。如果我们需要判断一个变量是否不等于多个值中的任意一个,可以这样写:

if not any([x == v for v in [1, 2, 3]]):
    # do something

这里使用了列表推导式来构建一个包含多个比较表达式的列表,any() 函数判断其中是否有任意一个为真,再取反得到最终的判断结果。

使用面向对象的方式

如果我们需要经常判断多个值是否在某个范围内,可以考虑使用面向对象的方式来封装这个功能。例如,我们可以定义一个 ValueRange 类来表示一个值范围,然后在该类中实现 __contains__() 方法来判断一个值是否在该范围内:

class ValueRange:
    def __init__(self, *values):
        self._values = set(values)
    
    def __contains__(self, value):
        return value not in self._values

使用这个类时,只需要创建一个 ValueRange 对象,并将需要判断的值作为参数传入即可:

range1 = ValueRange(1, 2, 3)
range2 = ValueRange(10, 20, 30)

if x in range1:
    # do something

if x in range2:
    # do something
总结

Python 不等于多个值可以使用 not in 运算符、any() 函数以及面向对象的方式来实现。具体使用哪种方式,应该根据实际情况进行选择。