我在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列表是否有任何内置方法可以删除这些行?
答案 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)
)