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

Python生成相邻元素差值大于3的有序随机列表代码求助

解决方案

思路说明

  • 用无限循环包裹「生成候选列表→校验规则」的全流程,只要不符合要求就重新执行生成逻辑
  • 校验阶段只要发现任意一对相邻元素差值小于3,直接判定当前列表非法,进入下一轮生成
  • 所有相邻元素差值均满足要求时,直接返回结果即可

完整可运行代码

基于你原有写法的修改版

import random

def generateList():
    while True:
        timeSlots = list(range(0, 61)) # 如果要包含60,range结束值需设为61(Python range为左闭右开区间)
        random.shuffle(timeSlots)
        timeSlots = timeSlots[:9]
        timeSlots.sort()

        valid = True
        for cur, nxt in zip(timeSlots, timeSlots[1:]):
            if nxt - cur < 3:
                valid = False
                break # 发现不符合项直接跳出校验循环
        if valid:
            return timeSlots

更简洁的优化版

使用random.sample直接抽取9个不重复元素,配合all()函数做校验,写法更高效简洁:

import random

def generateList():
    while True:
        # 直接从0-60区间随机抽取9个不重复元素
        timeSlots = random.sample(range(0, 61), 9)
        timeSlots.sort()
        # 一次性校验所有相邻差值是否符合要求
        if all(nxt - cur >= 3 for cur, nxt in zip(timeSlots, timeSlots[1:])):
            return timeSlots

补充说明

9个元素要求相邻差值至少为3,最小需要的区间跨度为(9-1)*3=24,远小于0-60的区间长度,不存在生成失败的情况,不会出现死循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:15:02