获得python列表的所有k个组合的有效方法

sup*_*cr7 1 python

我使用的itertools.combinations(iterable,k)方法对于大型测试用例来说非常耗时.有没有什么方法可以让它更快.

例如,我有一个数字列表: [1,2,3]

列表的所有可能的'2'组合: [(1,2),(1,3),(2,3)]

任何帮助表示赞赏.

ssh*_*124 7

itertoools.combinations(i, k)很有效率.我认为你发现它耗费时间的原因是因为你正在将生成器转换成一个列表:list(itertools.combinations(i, k)).但是,您可以根据需要在for循环中逐个使用这些值,如下所示:

for item in itertools.combinations(i, k):
    #do stuff with each combination
Run Code Online (Sandbox Code Playgroud)