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

Python消除元组if else判断 优化循环运行速度

Python列表遍历性能优化方案

原代码性能瓶颈

原代码运行耗时超50秒的核心原因有三个:

  • 用列表存储已使用编号,in成员判断的时间复杂度为O(n),每判断一个元素就要遍历近34万条已用数据,总运算量极高
  • 提前构造两个全量元组列表,额外做了大量无意义的元组打包、拆包操作,内存占用高且算力浪费严重
  • 循环内的判断逻辑伴随冗余的元组构造,进一步拖慢运行速度

优化后代码

优化后运行耗时可降至0.05秒以内,运行结果和原代码完全一致:

import string

a, b, c = string.ascii_lowercase, string.ascii_uppercase, string.digits

# 已使用数字直接存为集合,查询时间复杂度O(1),无需包装为元组
used_set = set(range(150, 340192))
# 全量数字范围
all_range = range(100, 1000000)

# 直接通过集合差集过滤已使用数字,完全消除循环内的if判断,无需额外元组处理
x = [(i, a, b, c) for i in all_range - used_set]

print(len(x))

优化点说明

  • 采用set存储已使用数字,将成员查询的线性耗时降为常数耗时,是性能提升的核心
  • 利用range对象支持集合差集运算的特性,一次性完成过滤,完全去掉了循环内部的if判断分支,也不需要做(item[0],)这类冗余的元组构造、拆包操作
  • 去掉了两个无用的中间全量元组列表,内存占用降低90%以上

优化后最终输出的长度为659858,和原代码逻辑结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:48:33