【发布时间】:2020-03-06 17:30:57
【问题描述】:
从概念上讲,我正在尝试从一个包含 10 个值的池(例如 [0-9])中构建可能的排列数组,其中您可以根据排名在每个元素处选择 3 个。因此,假设选择的第一个元素是 0,那么下一个可供选择的值池将是 1、2、3。如果然后选择了三个 [0,3],那么下一个选择将有一个 [1,2,4] 池,依此类推。我希望这有 5 个级别,但当然是试图编写一个对级别数、值和限制条件任意的解决方案。 目标是在嵌套数组中传回所有排列。我将使用这个数组来构建一个用于可视化的 DataFrame。
我的第一次尝试是使用itertools permutations 为这 10 个值创建所有排列,然后根据与前一个条目的距离从那些不符合我的条件的排列中删除。这似乎效率低下,但我也很难确定移除的条件。
编辑:我没有正确指定选择过程始终以 [0,1,2] 作为第一选择。根据可用的下一个等级(例如 10 的最大等级)在每个等级中添加额外的选项。因此,如果在第一等级选择 2,则“3”代替它。 [0,1,3] 是下一个可用的选择。如果选择 1,则您在下一级有 [0,3,4] 可供选择。这一直持续到您达到说 5 个选择的最大长度。
【问题讨论】:
-
我无法理解您的选择通常是如何工作的。如果首先选择
8,那么下一个池是什么?选择第二个数字后,池究竟如何变化? -
你能澄清一下吗?排列的第一个选择元素可以是 0 到 9 中的任何一个,还是只能从 [0, 1, 2] 的初始池中提取?一个完整的排列是否具有所有 10 个值,或者每个排列都可以是可变长度的?目前尚不清楚如何将您的示例扩展到您想要的行为的完整规范。
-
我添加了一些说明。让我知道需要更多信息。
标签: python numpy permutation