36.List的partition、find、takeWhile、dropWhile、span、forall、exists操作代码实战

本文通过实战案例介绍了Scala中partition、find、takeWhile、dropWhile、span等方法的应用,并演示了如何使用forall和exists来检查矩阵中是否存在全零行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、partition、find、takeWhile、dropWhile实战

    println(List(1,2,3,4,5) partition(_ % 2 == 0))  //把List分成两部分,偶数\奇数各一部分
    println(List(1,2,3,4,5) find(_ % 2 == 0))  //找出List集合中第一个满足条件的元素,注意是第一个
    println(List(1,2,3,4,5) find(_ <= 0))   
    println(List(1,2,3,4,5) takeWhile(_ < 4))  //获取符合条件的元素
    println(List(1,2,3,4,5) dropWhile(_ < 4))  //去掉符合条件的元素
    println(List(1,2,3,4,5) span(_ < 4))   //同partition,只是效率稍高

输出:

(List(2, 4),List(1, 3, 5))
Some(2)
None
List(1, 2, 3)
List(4, 5)
(List(1, 2, 3),List(4, 5))


二、span、forall、exists实战

计算一个矩阵中是否存在一行所有元素都为0的情况

    def hastotallyZeroRow(m : List[List[Int]] ) = m exists (row => row forall ( _ == 0))  
    //forall:List中所有元素都满足forall参数的条件,才会返回true;否则返回false
    //exists:只要存在一个元素满足函数,就返回true;否则返回false

   val m = List(List(1,0,0), List(0,1,0), List(0,0,0))
    println(hastotallyZeroRow(m))
输出:true

参考资料来源于大数据梦工厂 深入浅出scala 第36讲 由王家林老师讲解




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值