我需要生成的組合使用scalas組合方法的流/列表斯卡拉組合功能未終止
1 to 30000.toStream.combinations(2).size
此功能永遠不會完成30,000項的列表。當我在Python中嘗試相同的操作時
r = list(range(1,30000))
z = itertools.combinations(r, 2)
%time sum(1 for _ in z)
該操作在26.2秒內完成。
這是怎麼回事?我如何生成scala中非常大的列表的組合?
請注意,「組合」方法指定每個組合只能出現一次。所以'List(1,2,2).combinations(2).toList.ordered == List(List(1,2),List(2,1))''。我不知道OP是否對這個屬性感興趣,但是在你的輸出上運行'distinct'確實需要一些時間(儘管可能比stdlib的實現時間少得多)。 –