给出
val numbers = Seq(1,2,3)
numbers.combinations(2).toList
给出
res2: List[Seq[Int]] = List(List(1, 2), List(1, 3), List(2, 3))
取代成对组合,获取订购功能的名称是什么?组合
e.g。
列表(1,2
1,3
2,1
2,3
3,1
3,2
)
答案 0 :(得分:1)
其中一个简单的方法是使用for循环
scala> val numbers = Seq(1,2,3)
//numbers: Seq[Int] = List(1, 2, 3)
scala> for(num1 <- numbers; num2 <- numbers; if(num1 != num2)) yield (num1, num2)
//res0: Seq[(Int, Int)] = List((1,2), (1,3), (2,1), (2,3), (3,1), (3,2))
另一种方法是使用排列作为
scala> val numbers = Seq(1,2,3)
//numbers: Seq[Int] = List(1, 2, 3)
scala> numbers.permutations.map(list => (list(0), list(1))).toSet.toList
//res0: List[(Int, Int)] = List((3,1), (3,2), (1,3), (2,3), (1,2), (2,1))
答案 1 :(得分:1)
这将导致所有预期的对,但不会按照您要求的顺序。
numbers.combinations(2).flatMap(p => List(p,p.reverse)).toList