Python 生成所有可能的组合,其中连续对的最大差值为1000

Python 生成所有可能的组合,其中连续对的最大差值为1000,python,conditional-statements,combinations,Python,Conditional Statements,Combinations,我想从一个排序列表(长度150)中生成长度为9的组合,没有任何重复值: 24110157 256278368416502593666751801827925, 991, 1044, 1118, 1159, 1203, 1296, 1375, 1479, 1546, 1621, 1679, 1695, 1726, 1832, 1922, 1978, 1995, 2041, 2119, 2160, 2240, 2315, 2421, 2493, 2527, 2543, 2559, 2654, 276

我想从一个排序列表(长度150)中生成长度为9的组合,没有任何重复值:

24110157 256278368416502593666751801827925, 991, 1044, 1118, 1159, 1203, 1296, 1375, 1479, 1546, 1621, 1679, 1695, 1726, 1832, 1922, 1978, 1995, 2041, 2119, 2160, 2240, 2315, 2421, 2493, 2527, 2543, 2559, 2654, 2762, 2813, 2883, 2950, 2982, 3009, 3052, 3103, 3162, 3239, 3346, 3427, 3462, 3480, 3548, 3638, 3670, 3761, 3833, 3898, 3946, 3979, 4051, 4096, 4124, 4219, 4289, 4393, 4455, 4497, 4590, 4695, 4769, 4835, 4874, 4891, 4965, 5065, 5159, 5247, 5323, 5352, 5406, 5493, 5534, 5581, 5687, 5796, 5881, 5982, 6049, 6110, 6200, 6266, 6297, 6312, 6392, 6452, 6501, 6599, 6651, 6734, 6758, 6799, 6859, 6912, 6942, 7049, 7149, 7258, 7296, 7317, 7363, 7446, 7494, 7589, 7653, 7737, 7803, 7820, 7929, 8012, 8117, 8135, 8174, 8242, 8349, 8417, 8511, 8589, 8611, 8643, 8717, 8765, 8795, 8854, 8880, 8936, 8987, 9041, 9100, 9186, 9292, 9398, 9472, 9502959896429731978998649936

我已经试过了:

itertools.combinations(list, 9)
然而,这不是很有效,会产生超过10亿个组合。我只想要每对连续数字之间的差值小于等于150的组合。例如,组合

(24, 110, 157, 256, 278, 368, 416, 502, 593)
(24, 110, 157, 256, 278, 368, 416, 502, 9936)
没有差值大于150的连续对,但组合

(24, 110, 157, 256, 278, 368, 416, 502, 593)
(24, 110, 157, 256, 278, 368, 416, 502, 9936)
具有一个差值大于150的连续对
5029936

如何在Python中实现这一点?输入列表已排序,我需要对输出也进行排序


我已经找到了这个解决方案,非常好。然而,输出没有排序,这是我的问题,它生成的组合中,每对都有150个最大差异-不仅仅是连续的对-因此它排除了上面给出的示例,因为593-24>150

import itertools
import random

def combs(nums):
    result = set()
    for lower in nums:
        options = [n for n in nums if lower <= n <= lower + 150]
        result.update(itertools.combinations(options, 9))
    return result

print(combs([random.randrange(0, 5000) for _ in range(150)]))
导入itertools
随机输入
def梳(NUM):
结果=集合()
对于以NUM表示的较低版本:

选项=[n代表n,单位为nums,如果不是更低,你不是在几个小时前才问这个问题吗?请每个问题发布一次。谢谢。可能是重复的