所以我最近遇到了这个问题,我很困惑让itertools开心地工作。
问题
让我们说我列出了六个元素:
elements = ["A", "B", "C", "D", "E", "F", "G"]
我想用函数生成具有随机大小(1-max_length_of_elements)的列表的所有组合。
def generate_combinations(elements, size_of_combinations = 6):
import itertools
combinations = itertools.combinations(elements, size_of_combinations)
return list(combinations)
发生的事情是我回来了
[
('A', 'B', 'C', 'D', 'E', 'F'),
('A', 'B', 'C', 'D', 'E', 'G'),
('A', 'B', 'C', 'D', 'F', 'G'),
('A', 'B', 'C', 'E', 'F', 'G'),
('A', 'B', 'D', 'E', 'F', 'G'),
('A', 'C', 'D', 'E', 'F', 'G'),
('B', 'C', 'D', 'E', 'F', 'G')
]
对我来说有点奇怪,因为它似乎实际上是在进行组合,但是限制了元素必须按顺序排列。
所以我想知道是否有一种简单的方法可以使itertools组合与生成所有未排序的组合一起使用。
或者也许我可以遵循另一种方法。