Python 查找所有可能的箱子组合

Python 查找所有可能的箱子组合,python,combinations,slice,binning,Python,Combinations,Slice,Binning,我有10万次观察,变量年龄在18-80之间。我想根据age变量查找X垃圾箱。箱子范围不得重叠,且应在整个间隔内合并。例如,使用X=4一种可能的箱子组合可以是: 18-30 31-45 46-57 58-80 给定值X,如何找到所有可能的箱子组合 编辑:在@Wolf的提示下,我考虑自己实现另一个约束条件。每个箱子必须为age变量保存至少10个值。这当然限制了X因此X最合适的方法是使用itertools标准库模块中的函数来查找组合 from itertools import combinatio

我有10万次观察,变量
年龄
在18-80之间。我想根据
age
变量查找
X
垃圾箱。箱子范围不得重叠,且应在整个间隔内合并。例如,使用
X=4
一种可能的箱子组合可以是:

  • 18-30
  • 31-45
  • 46-57
  • 58-80
给定值
X
,如何找到所有可能的箱子组合


编辑:在@Wolf的提示下,我考虑自己实现另一个约束条件。每个箱子必须为
age
变量保存至少10个值。这当然限制了
X
因此
X最合适的方法是使用
itertools
标准库模块中的函数来查找组合

from itertools import combinations

def bin_combinations(values, n):
    """
    Generate all possible combinations of splitting the values into n
    contiguous parts.

    >>> list(bin_combinations('abcd', 3))
    [['a', 'b', 'cd'], ['a', 'bc', 'd'], ['ab', 'c', 'd']]
    """
    for indices in combinations(range(1, len(values)), n - 1):
        starts = [None] + list(indices)
        ends = list(indices) + [None]
        yield [values[start:end] for start, end in zip(starts, ends)]

对这些垃圾箱有进一步的限制吗?例如,
18,19,20,21-80
是否是一个有效的组合?我已经更新了我的帖子。你是否尝试过调整我的解决方案以适应你的受限问题?是的,但我很难扔掉一整套垃圾箱而不是一个垃圾箱。参见下面的代码:
关于组合中的索引(范围(1,len(值)),n-1:li=list(索引)start=[None]+li ends=li+[None]size=li[-1]-li[0]如果size>=10:yield[value[start:end]表示开始,结束于zip(开始,结束)]
我尝试了两种不同的修改,但是运气不好。谢谢你的快速回复!我添加了另一个约束(参见我的帖子)。
from itertools import combinations

def bin_combinations(values, n):
    """
    Generate all possible combinations of splitting the values into n
    contiguous parts.

    >>> list(bin_combinations('abcd', 3))
    [['a', 'b', 'cd'], ['a', 'bc', 'd'], ['ab', 'c', 'd']]
    """
    for indices in combinations(range(1, len(values)), n - 1):
        starts = [None] + list(indices)
        ends = list(indices) + [None]
        yield [values[start:end] for start, end in zip(starts, ends)]