如何将列表元组展平为Scala中的列表列表

mik*_*ike 2 scala tuples list type-conversion flatten

我是新的Scala和我正在寻找一种方法来做类似的事情

val list = List(1, 0, 1, 2, 3, 1, 2, 0, 1, 2, 0, 3, 2, 0, 1)

mylist.sortWith(_ > _).partition(_ == 1).flatten
Run Code Online (Sandbox Code Playgroud)

问题是partition()产生一个列表元组,但我需要一个列表列表.

目标是在不使用其他变量的情况下在一行中完成此工作,而不是在需求中进行优化.

一个肮脏/愚蠢的方式来实现我想要做的将是:

List(mylist.sortWith(_ > _).partition(_ == 1)._1, mylist.sortWith(_ > _).partition(_ == 1)._2).flatten
Run Code Online (Sandbox Code Playgroud)

我也想知道我是否可以抛出partition()的输出来展平它

swa*_*ock 5

这是一种方法:

list.sorted.groupBy(_ == 1).values.toList
Run Code Online (Sandbox Code Playgroud)
  • sorted()只是按升序对列表进行排序(可行,因为它只包含Ints)
  • groupBy()将其转换为true - > 1,false - > all的映射
  • values()返回地图的值
  • toList()将此映射值的集合转换为所需的列表.