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

Python:从指定数字区间生成唯一有序列表的最快实现方法

生成百万级唯一有序列表的最优解决方案

原有代码运行极慢的核心原因有两个:

  • 用列表做存在性检查,r not in mainlist 的时间复杂度是O(n),当mainlist长度到百万级时,单次检查就要遍历上百万个元素,总时间复杂度达到O(n²),完全无法支撑576万的量级
  • 列表是不可哈希类型,无法存入哈希结构做O(1)的存在性校验

以下是两类可直接落地的最优方案,可按需选择:

方案1:需要列表随机分布的场景

从1-10000中取24个不重复元素的有序排列总共有 P(10000,24) 种,这个数值远大于576万,随机采样的碰撞概率几乎可以忽略,仅需要把查重结构换成哈希集合即可大幅提升效率:

import random

num_pool = list(range(1, 10001))
seen = set()
mainlist = []
target_count = 5760000

while len(mainlist) < target_count:
    cur_sample = random.sample(num_pool, 24)
    # 转成可哈希的元组存入集合做O(1)查重
    cur_tuple = tuple(cur_sample)
    if cur_tuple not in seen:
        seen.add(cur_tuple)
        mainlist.append(cur_sample)

该方案在普通消费级CPU上运行时间一般在30秒到2分钟之间,可正常跑完生成任务。

方案2:无随机分布要求,仅需满足规则的场景

如果对列表的随机分布没有要求,可以直接按规则生成唯一列表,不需要任何查重逻辑,几秒就能生成全部数据:

mainlist = []
target_count = 5760000

for offset in range(target_count):
    # 滑动窗口生成24个连续不重复的数,天然有序且所有列表互不重复
    cur_sample = [(offset + i) % 10000 + 1 for i in range(24)]
    mainlist.append(cur_sample)

该方案生成的所有列表天然满足:内部无重复元素、任意两个列表不完全相同、顺序可区分的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:15:02