我有(Char,Int)pars的List oX(它包含仅具有唯一Char值的对)
List(( ,3), (d,1), (e,3), (h,3), (i,1) , (l,3), (o,2), (r,2), (t,1), (w,1))
我需要将此列表划分为2个-一个包含任何具有'd'Char的对,另一个是其余的。
因此,我尝试了分区和跨度,但发现跨度无法按预期工作。这是结果(从scala工作表复制)
val myPartition = oX.partition(e => e._1 == 'd') > myPartition : (List[(Char, Int)], List[(Char, Int)]) = (List((d,1)),List(( ,3), (e,3), (h,3), (i,1), (l,3), (o,2), (r,2), (t,1), (w,1)))
val mySpan = oX.span(e => e._1 == 'd') > mySpan : (List[(Char, Int)], List[(Char, Int)]) = (List(),List(( ,3), (d,1), (e,3), (h,3), (i,1), (l,3), (o,2), (r,2), (t,1), (w,1)))
我感到困惑的是,为什么给定相同的谓词functino分区却给了我预期的结果,而span给了我空的列表作为第一列表而原始的副本作为第二列表
从文档中span
:“返回列表的最长前缀,列表的所有元素均满足给定谓词,而列表的其余部分都满足。”
因此,这span
给了您预期的结果:由于列表中的第一个元组没有字符d
,因此每个元组都具有字符的列表的最长前缀d
确实是空列表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句