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
相关产品推荐
相关产品推荐

