高效获取Python列表的所有k组合方法

2 投票
1 回答
2928 浏览
提问于 2025-04-18 11:28

我使用了 itertools.combinations(iterable,k) 这个方法,但对于大数据量的测试来说,这个方法比较耗时。有没有什么方法可以让它更快呢?

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

这个列表中所有可能的两个数字组合是: [(1,2),(1,3),(2,3)]

任何帮助都非常感谢。

1 个回答

9

itertools.combinations(i, k) 这个方法非常高效。我想你觉得它运行慢的原因,是因为你直接把生成器转换成了列表,像这样:list(itertools.combinations(i, k))。不过,你可以在需要的时候,逐个使用这些值,像下面这样用一个循环:

for item in itertools.combinations(i, k):
    #do stuff with each combination

撰写回答