You need to enable JavaScript to run this app. Python素数生成器循环首轮n=2时all函数返回True的原理是什么?
优惠活动
大模型
产品
解决方案
定价
更多

Python素数生成器循环首轮n=2时all函数返回True的原理是什么?

Python素数生成器空集合判断逻辑解答

你疑惑的核心是Python内置all()函数的默认规则,和生成器语法无关:

  • all(可迭代对象)的判定逻辑是:只有可迭代对象里所有元素的布尔值都为True时才返回True,如果可迭代对象本身是空的,会直接返回True。这个是数理逻辑里的通用约定:针对空集合的全称判断默认成立,通俗来说就是“没有反例就默认条件满足”。
  • 对应代码第一次循环(n=2)的场景:此时primes是空集合,all(n % p > 0 for p in primes)里的生成器表达式遍历不到任何元素,没有违反n % p >0的情况,自然返回True,因此if条件成立,2会被加入素数集合并返回。

你可以直接运行下面的代码验证这个规则:

# 空可迭代对象传入all返回True
print(all([]))  # 输出:True
print(all(item for item in set()))  # 输出:True

补充个方便记忆的点:和all()对应的any()函数刚好相反,空可迭代对象传入会返回False,对应“空集合里没有满足条件的元素”的逻辑。


内容的提问来源于stack exchange,提问作者Ray Ronnaret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 22:24:02