Python如何不使用For Loop判断匹配元素存在并返回布尔值
实现方案
可以用Python内置的any()函数实现需求,无需手动编写显式for循环,该函数底层自动完成遍历逻辑,还自带短路优化:遇到第一个满足条件的元素就直接停止遍历返回结果,性能优于全量遍历的手动循环。
无显式for循环的实现代码
my_list = [[1, 2], [4, 6], [8, 3]] combined = [3, 8] # 提前生成目标集合,避免遍历过程中重复计算,提升运行效率 target_set = set(combined) # 直接返回布尔值:匹配到返回True,未匹配返回False is_exist = any(set(item) == target_set for item in my_list) print(is_exist)
如果完全不想在代码中出现for关键字,可改用map配合lambda实现:
is_exist = any(map(lambda x: set(x) == target_set, my_list))
特殊场景适配
如果业务场景中combined或者子列表存在重复元素,使用set判断会出现误判(比如[3,3]和[3]转集合后均为{3}),这种情况可以改用sorted做顺序对齐后判断:
target_sorted = sorted(combined) is_exist = any(sorted(item) == target_sorted for item in my_list)
内容的提问来源于stack exchange,提问作者Kaita John
相关产品推荐
相关产品推荐

