输入:
val list = List(1, 2, 3, 4)
所需输出:
Iterator((1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4))
此代码有效:
for (cur1 <- 0 until list.size; cur2 <- (cur1 + 1) until list.size)
yield (list(cur1), list(cur2))
但这似乎不是最佳方法,还有更好的方法吗?
scala> List(1,2,3,4).combinations(2).toList
res0: List[List[Int]] = List(List(1, 2), List(1, 3), List(1, 4), List(2, 3), List(2, 4), List(3, 4))
它返回一个Iterator
,但我.toList
只是为了打印结果而添加了。如果要以元组形式显示结果,则可以执行以下操作:
scala> List(1,2,3,4).combinations(2).map{ case Seq(x, y) => (x, y) }.toList
res1: List[(Int, Int)] = List((1,2), (1,3), (1,4), (2,3), (2,4), (3,4))
您还提到了唯一性,因此可以将其应用于.distinct
输入列表,唯一性不是功能的先决条件,因为.combination
不会为您消除重复数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句