加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中,是否可以压缩两个不同大小的列表?

发布时间:2020-12-16 09:13:27 所属栏目:安全 来源:网络整理
导读:例如假设我有 val letters = ('a','b','c','d','e')val numbers = (1,2) 是否可以生成列表 (('a',1),('b',2),('c',('d',('e',1)) 解决方法 你的字母和数字是元组,而不是列表.所以我们来解决一下 scala val letters = List('a','e')letters: List[Char] = Lis
例如假设我有

val letters = ('a','b','c','d','e')
val numbers = (1,2)

是否可以生成列表

(('a',1),('b',2),('c',('d',('e',1))

解决方法

你的字母和数字是元组,而不是列表.所以我们来解决一下

scala> val letters = List('a','e')
letters: List[Char] = List(a,b,c,d,e)

scala> val numbers = List(1,2)                    
numbers: List[Int] = List(1,2)

现在,如果我们压缩它们,我们不会得到所需的结果

scala> letters zip numbers
res11: List[(Char,Int)] = List((a,(b,2))

但是这表明,如果数字无限重复,那么问题将得到解决

scala> letters zip (Stream continually numbers).flatten
res12: List[(Char,(c,(d,(e,1))

不幸的是,这是基于数字比字母短的知识.所以要解决这一切

scala> ((Stream continually letters).flatten zip (Stream continually numbers).flatten take (letters.size max numbers.size)).toList
res13: List[(Char,1))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读