在Scala中有一个等同于Python的更通用的地图函数?
发布时间:2020-12-16 19:01:19 所属栏目:安全 来源:网络整理
导读:我知道 Scala的列表有一个 map的签名(f:(A)= B)实现:List [B]和一个带有签名的 foreach实现(f:(A)= Unit):Unit寻找接受多个迭代的东西,与Python map接受多个迭代的方式相同. 我正在寻找具有(f:(A,B)= C,Iterable [A],Iterable [B])的签名的东西:Iterab
我知道
Scala的列表有一个
map的签名(f:(A)=> B)实现:List [B]和一个带有签名的
foreach实现(f:(A)=> Unit):Unit寻找接受多个迭代的东西,与Python
map接受多个迭代的方式相同.
我正在寻找具有(f:(A,B)=> C,Iterable [A],Iterable [B])的签名的东西:Iterable [C]或等价物.有没有图书馆存在或类似的方式做类似的? 编辑: 如下所示,我可以做到 val output = myList zip( otherList ) map( x => x(0) + x(1) ) 但是在步骤之间创建一个临时列表.如果评论者可以发表我可以upvote他(提示,提示),但有另一种方式吗? 解决方法
在scala 2.8中,有一种叫做Tuple2& Tuple3避免创建临时收集.
以下是一些示例用例: Welcome to Scala version 2.8.0.r21561-b20100414020114 (Java HotSpot(TM) Client VM,Java 1.6.0_18). Type in expressions to have them evaluated. Type :help for more information. scala> val xs = 0 to 9 xs: scala.collection.immutable.Range.Inclusive with scala.collection.immutable.Range.ByOne = Range(0,1,2,3,4,5,6,7,8,9) scala> val ys = List.range(0,10) ys: List[Int] = List(0,9) scala> val zs = Array.range(0,10) zs: Array[Int] = Array(0,9) scala> (xs,ys).zipped.map{ _+_ } res1: scala.collection.immutable.IndexedSeq[Int] = Vector(0,10,12,14,16,18) scala> (zs,ys,xs).zipped.map{ _+_+_ } res2: Array[Int] = Array(0,9,15,18,21,24,27) scala> 在Tuple2和Tuple3中都有一个zip方法. 注意:(xs,ys).zip和(xs,ys)也有一些缺陷.zip压缩,确保xs不能是一个INFINITE流.转到Ticket #2634获取更多信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |