【发布时间】:2019-12-25 17:53:56
【问题描述】:
我有一个整数列表
keys = [18, 99, 86, 61, 66, 81, 98, 19, 91, 16, 69, 88, 89, 68, 11, 96]
我想找到 this 列表的所有排列,这样对于每个排列
元素 0 到 3 加起来为 264,
元素 4 到 7 加起来是 264,
元素 8 到 11 加起来是 264 和
元素 12 到 15 到 264。
目前我有以下策略
使用 itertools.permutations 计算所有排列
检查哪些排列满足我的条件
还有其他性能更好的策略吗?
【问题讨论】:
-
我意识到我的问题可以用更好的方式提出。我进行了更新。 @ChrisDoyle
-
请不要关闭这个,我正在研究解决方案。
-
在我看来,计算所有排列然后检查满足 s 的排列与生成单个排列并检查它是否符合标准的速度大致相同。然后生成下一个。您仍然需要进行 N 次排列 a dn N 次计算
-
能否请您评论一下为什么您认为该问题集中在多个问题上? @jonrsharpe
-
试试这个,太棒了,在它关闭之前,我距离添加这个答案只有两秒钟的时间。它真的很酷,想分享它,你只需要 pip install more_itertools: from more_itertools import distinct_combinations import numpy as np np.array(list(distinct_combinations(keys,4)))[[sum(x)==264 for x在 distinct_combinations(keys,4)]]
标签: python combinations permutation constraint-satisfaction