我想组合两个元组,例如
我的元组是:
(a,b)
(a,c)
(d,a)
(d,c)
我希望组合为,
(a,b,c) // Ist & IInd tuple
(a,b,d) // Ist & IIIrd tuple
(a,b,d,c) // Ist & IVth tuple
(a,c,d) // IInd & IIIrd tuple ( IInd & IVth is also same)
这里我最初将第一个元组与第二个元组,第三个元组和最后一个元组组合在一起。然后我拿第二个元组并将它与第三元组和第四元组结合起来。最后我采用第三元组并将其与剩余的最后一元组合。记住如果我们组合两个元组,如果出现相同的组合值,则删除重复的元组
答案 0 :(得分:4)
如果你想要它们作为输出,那么元组是非常困难的。如果set
会这样做:
scala> List(('a,'b), ('a,'c), ('d,'a), ('d,'c)).combinations(2).map(
y => y.flatten(_.productIterator).toSet).toSet
res42: scala.collection.immutable.Set[scala.collection.immutable.Set[Any]] =
Set(Set('a, 'b, 'c), Set('a, 'b, 'd), Set('a, 'b, 'd, 'c), Set('a, 'c, 'd))
答案 1 :(得分:1)
这样的东西可能会起作用
val tuples = List(('a','b'),('a','c'),('d','a'),('d','c'))
def combine (tuples: List[(Char,Char)]) = {
val combinations = for {
t1<- tuples
t2<- tuples
if (t1!=t2)
} yield {
Set(t1._1,t1._2,t2._1,t2._2).toList.sorted
combinations.toSet }