You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Python素数判断函数返回的set中False总是排在True前面

关于set集合中False始终排在True前面的问题解答

你遇到的展示顺序是Python的固定特性,原因如下:

  • Python中bool是int的子类,False等价于整数0,True等价于整数1
  • 二者的哈希值和对应整数值完全一致:hash(False) = 0,hash(True) = 1
  • set底层基于哈希表实现,元素的存储和展示顺序由哈希值大小决定,哈希值更小的False自然会排在True前面,和插入集合的先后顺序无关

你提供的代码片段:

def is_prime(number):
    return set(([True if number % i != 0 else False for i in range(2, number)]))
print(is_prime(15))

另外你的素数判断实现存在可优化点:

  • 无需遍历到number-1,只要遍历到√number就可以完成素数判断
  • 无需生成完整列表再转set,遍历到第一个能整除的因子即可提前返回结果,性能提升明显
  • 函数返回set不符合语义,建议调整为直接返回布尔值,优化后参考实现:
def is_prime(number):
    if number <= 1:
        return False
    return all(number % i != 0 for i in range(2, int(number**0.5) + 1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:36:04