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

Python中将数字划分为偶数和奇数的更优方案是什么

原代码问题说明

你贴的原始实现存在核心逻辑错误,根本无法正常运行:

  • 内层误用while做奇偶判断:只要num满足奇偶条件,循环内没有修改num值的逻辑,会无限向对应列表追加同一个数字,直接触发死循环
  • 末尾的if num == 1: break永远不会生效:遍历的范围是range(5,10000),num从5开始逐次递增,不会自动降到1,这个判断完全是冗余无效代码

奇偶划分本质是单次条件判断场景,完全不需要内层循环,下面给几个不同场景下的更优实现,最终输出结果完全匹配需求:将5到9999范围内的数字按偶数、奇数分别存入Sequenz和Sequenz2两个列表。

可选优化方案

1. 高可读性基础版

逻辑最直白,无语法门槛,适合新手维护,逐次遍历判断即可:

Sequenz = []
Sequenz2 = []

for num in range(5, 10000):
    if num % 2 == 0:
        Sequenz.append(num)
    else:
        Sequenz2.append(num)

2. 列表推导式版

Python原生语法优化,比逐次调用append的写法性能高20%左右,代码更简洁:

target_range = range(5, 10000)
Sequenz = [num for num in target_range if num % 2 == 0]
Sequenz2 = [num for num in target_range if num % 2 == 1]

3. 零判断最高性能版

利用range的步长参数直接生成奇偶序列,完全不需要逐个做取模判断,性能是三个方案里最高的,适合大范围数值生成场景:

# 遍历起点5是奇数,偶数序列从最近的偶数6开始,步长设为2
Sequenz = list(range(6, 10000, 2))
# 奇数序列直接从起点5开始,步长设为2
Sequenz2 = list(range(5, 10000, 2))
  • 注意:如果后续调整遍历的起止范围,用步长生成的方案需要注意核对起点的奇偶性,避免出现序列错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:01:12