MTT
MTT

Reputation: 5263

Remove zero rows from a list of list in Scala

I have a list of list in Scala such as:

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))

and I want to remove all zero rows and the result should be like:

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

Does Scala list have any built-in method to remove these rows?

Upvotes: 2

Views: 832

Answers (2)

Brian
Brian

Reputation: 20295

@Tzach Zohar answer is perfectly fine but here is another way to approach it.

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)
)

Upvotes: 2

Tzach Zohar
Tzach Zohar

Reputation: 37852

You can use filter to keep only items (lists) matching a predicate; The predicate can use exists to check for non-zero elements:

lst.filter(_.exists(_ != 0))

Upvotes: 3

Related Questions