杰瑞科技汇

Python中多个not in如何正确使用?

在 Python 中,你可以使用 if 语句结合多个 not in 条件来判断一个元素是否不在多个列表/集合/元组等可迭代对象中,以下是几种实现方式:


方法 1:直接使用 and 连接多个 not in

my_list = [1, 2, 3]
a = 4
if a not in my_list and a not in [5, 6] and a not in (7, 8):
    print("a 不在任何一个列表中")
else:
    print("a 在某个列表中")

输出

a 不在任何一个列表中

方法 2:使用 all() 函数(更简洁)

如果需要检查元素是否不在多个可迭代对象中,可以用 all() 结合生成器表达式:

my_list = [1, 2, 3]
a = 4
if all(a not in x for x in [my_list, [5, 6], (7, 8)]):
    print("a 不在任何一个列表中")
else:
    print("a 在某个列表中")

输出

a 不在任何一个列表中

方法 3:使用集合(适用于大量数据)

如果数据量较大,可以先合并所有检查项为一个集合,然后用 not in

my_list = [1, 2, 3]
combined = set(my_list) | {5, 6} | {7, 8}  # 合并所有检查项
a = 4
if a not in combined:
    print("a 不在任何一个列表中")
else:
    print("a 在某个列表中")

输出

a 不在任何一个列表中

方法 4:使用函数封装(提高可读性)

如果逻辑复杂,可以封装成一个函数:

def is_not_in_any(element, *iterables):
    return all(element not in iterable for iterable in iterables)
my_list = [1, 2, 3]
a = 4
if is_not_in_any(a, my_list, [5, 6], (7, 8)):
    print("a 不在任何一个列表中")
else:
    print("a 在某个列表中")

输出

a 不在任何一个列表中

方法 适用场景 优点 缺点
直接 and 少量条件 直观 条件多时冗长
all() + 生成器 多个条件 简洁 需要理解生成器
合并集合 大量数据 高效 占用额外内存
函数封装 复杂逻辑 可复用 需要定义函数

选择合适的方法取决于你的具体需求!

分享:
扫描分享到社交APP
上一篇
下一篇