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

如何实现列表元素两两最小差值校验与自动调整功能

整数列表元素调整问题与解决方案

问题需求

需要处理整数小列表,确保满足以下两个条件:

  • 列表内无重复元素
  • 任意两元素的绝对差值至少为10(支持适配其他差值要求)
    调整规则:若不满足任一条件,将较大的元素调整至符合差值要求。该功能用于大循环中批量处理多个小列表,示例输入为y_list = [16, 29, 10]。

原嵌套循环实现仅能完成三轮迭代,无法处理调整后新出现的不满足情况,尝试while True循环、all()函数及itertools.takewhile()均未解决问题。

最终实现方案

采用itertools.permutations生成所有元素对进行全组合校验,新增space参数以适配不同差值需求,该功能已成功用于52个Plotly图表的注释位置自动调整,实现代码如下:

import itertools

def adjust(l, space):
    for (idx1,num1), (idx2,num2) in itertools.permutations(enumerate(l), 2):
        difference = abs(l[idx1] - l[idx2])
        if difference < space:
            largest = max((idx1,num1), (idx2,num2), key=lambda x:x[1])
            largest_index = largest[0]
            l[largest_index] = l[largest_index] + (space - difference)
            annotations[largest_index]['y'] = l[largest_index]

说明:代码中annotations为外部定义的Plotly注释列表,需保证其索引与输入列表l的索引一一对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:55:31