我正在寻找Scala中subsequences
函数的等价物。我在scala.collection.Seq找不到它,也许它在其他地方被定义了。但在哪里?
我认为这个问题众所周知。例如,给定序列"abc"
,所有子序列的列表为["","a","b","ab","c","ac","bc","abc"]
。
Scala中的快速而脏的实现如下:
(for {ys <- xs.inits.toList; zs <- ys.tails} yield zs).distinct
但是使用已经定义的东西并且效率更高。
答案 0 :(得分:4)
您可以使用combinations
:
(0 to xs.length).toIterator.flatMap(i => xs.combinations(i))