如何将Python的for循环与if条件结合实现一行代码判断?
可以实现,用
any()结合生成器表达式就行 你想要的把for循环和if条件结合的写法,本质是用生成器表达式配合Python内置的any()函数,就能一行完成需求,完全等价于你原来的代码逻辑:
lst = [1, 2, 3, 4] print(any(l > 3 for l in lst)) # 输出 True
为什么你写的形式不行?
你写的if l > 3 for l in lst:是语法错误的,因为这种带有for的条件判断本身是一个生成器表达式(或者列表推导式),它是一个可迭代对象,不能单独作为语句使用。必须用any()/all()这类函数来“消费”这个可迭代对象,返回最终的布尔结果。
逻辑等价性说明
any()函数的作用是:只要迭代器中有任意一个元素为True,就返回True,否则返回False。这和你原来的代码逻辑完全一致——遍历列表,找到第一个大于3的元素就停止,标记found为True,效率也一样,不会多余遍历后续元素。
如果要把结果存到变量里,也可以写成:
found = any(l > 3 for l in lst) print(found)
内容的提问来源于stack exchange,提问作者M.Khan
相关产品推荐
相关产品推荐

