从Scala中的列表列表中删除零行

时间:2016-05-20 00:09:01

标签: scala

我在Scala中有一个列表列表,例如:

val lst = List(List(60, 0, 1, 2, 3, 28, 0, 0, 0, 0), List(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), List(47, 0, 1, 1, 2, 28, 0, 0, 0, 0))

我希望删除所有零行,结果应该是:

List(List(60, 0, 1, 2, 3, 28, 0, 0, 0, 0), List(47, 0, 1, 1, 2, 28, 0, 0, 0, 0))

Scala列表是否有任何内置方法可以删除这些行?

2 个答案:

答案 0 :(得分:3)

您可以使用it 'succeeds', :aggregate_failures do expect(response.status).to eq(200) expect(response.body).to eq('{"msg":"success"}') end 仅保留与谓词匹配的项目(列表);谓词可以使用filter来检查非零元素:

exists

答案 1 :(得分:2)

@Tzach Zohar的回答非常好,但这是接近它的另一种方式。

scala> lst.filterNot(xs => xs.forall(_ == 0))
res0: List[List[Int]] = List(
  List(60, 0, 1, 2, 3, 28, 0, 0, 0, 0),
  List(47, 0, 1, 1, 2, 28, 0, 0, 0, 0)
)