如何获得不同对象(列表或str)的所有可能组合

时间:2018-08-21 17:42:43

标签: python algorithm path combinatorics itertools

这更像是一个普遍的问题,我不确定是否针对我的想法存在任何算法,以及是否存在所谓的...

假设我们有三个对象(列表)

["object", 1 , "this is object one"]
["object2", 2 , "this is object one"]
["object3", 3 , "this is object three"]

我现在要做的是创建具有所有可能组合的新列表,例如

["object2", 1 , "this is object three"]
["object1", 3 , "this is object two"]

甚至未来

 [3, "object2", "this is object one"]
 [1 , "this is object 2" , ] # last item removed as part of going for all combinations

所以我正在寻找一种算法来混合/组合/添加/删除逻辑框架中的内容。

我知道python具有,但是在itertools lib和Combines方法中,但是它似乎并不能提供所有组合。

是否存在用于对象之间的路径和组合的已知算法/库?

谢谢

1 个答案:

答案 0 :(得分:1)

您似乎不需要组合。您需要Cartesian product,并且可能需要排列(从您的描述中还不清楚)。对于笛卡尔积,您需要执行类似的操作

export const EditorContainer = connect(
  null,
  mapDispatchToProps,
)(Editor);

对于问题的第二部分,在上一个示例构建的列表的每个元素上,都可以使用itertools.permutations