这可能可以在Google上找到,但我很难用语言表达我想做的事情。itertools.product 已经接近了,但我也想要更小的组合,而 itertools 只能给出所有列表的组合。以示例形式解释可能会更容易:
我想要组合的列表示例: [[a,b,c],[d,e,f],[g,h,i]]
Itertools 给出的结果是: [a,d,g],[a,d,h]....[c,f,h],[c,f,i] (27 个结果)
我需要的输出是: 上述内容加上:
[a,d],[a,e],[a,f],[b,d],[b,e],[b,f],[c,d],[c,e],[c,f],[d,g],[d,h],[d,i],[e,g],[e,h],[e,i],[f,g],[f,h],[f,i]
总共会有 45 个结果。请注意,我只想要相邻列表之间的组合(不想返回 [a,g])。列表也不会这么简单,将有一组包含每个 3-4 个字符的 10 个列表。
我对此的唯一一行代码是: list(itertools.product(*thelist))。我只是不知道下一步应该怎么做。我有一种感觉可以通过 itertools 实现这个功能,但我无法理解。
itertools.combinations
吗? - mkrieger1