在 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() + 生成器 |
多个条件 | 简洁 | 需要理解生成器 |
| 合并集合 | 大量数据 | 高效 | 占用额外内存 |
| 函数封装 | 复杂逻辑 | 可复用 | 需要定义函数 |
选择合适的方法取决于你的具体需求!
