3
A
回答
3
你可以用它尾巴zip
名单:
val list = List(1, 2, 3, 4, 5)
// list: List[Int] = List(1, 2, 3, 4, 5)
list zip list.tail
// res6: List[(Int, Int)] = List((1,2), (2,3), (3,4), (4,5))
5
(假设你不关心你的嵌套对是列表而不是元组)
斯卡拉集合有一个sliding
窗口函数:
@ val lazyWindow = List(1, 2, 3, 4, 5).sliding(2)
lazyWindow: Iterator[List[Int]] = non-empty iterator
为了实现集合:
@ lazyWindow.toList
res1: List[List[Int]] = List(List(1, 2), List(2, 3), List(3, 4), List(4, 5))
你甚至可以做更多 “funcy” 窗口,像长度为3,但与第2步:
@ List(1, 2, 3, 4, 5).sliding(3,2).toList
res2: List[List[Int]] = List(List(1, 2, 3), List(3, 4, 5))
1
我一直都是一个pattern matching
的粉丝。所以你也可以这样做:
val list = List(1, 2, 3, 4, 5, 6)
def splitList(list: List[Int], result: List[(Int, Int)] = List()): List[(Int, Int)] = {
list match {
case Nil => result
case x :: Nil => result
case x1 :: x2 :: ls => splitList(x2 :: ls, result.:+(x1, x2))
}
}
splitList(list)
//List((1,2), (2,3), (3,4), (4,5), (5,6))
相关问题
- 1. 斯卡拉找到元组
- 2. 斯卡拉 - 元组
- 3. 斯卡拉 - 在列表中找到一个特定的元组
- 4. 斯卡拉:地图列表中的元素到另一个列表元素
- 5. 在斯卡拉如何将列表中的元素与反向维度分组?
- 6. 斯卡拉:得到一个Map.head元素
- 7. 检索数组元素在斯卡拉
- 8. 斯卡拉更新数组元素
- 9. 斯卡拉 - 简单的元组生成
- 10. 修改元组的阵列,斯卡拉
- 11. 斯卡拉/阿卡流中元素的分组
- 12. 斯卡拉:在元组
- 13. 斯卡拉元组解构
- 14. 斯卡拉元组选
- 15. 斯卡拉元组提取
- 16. 斯卡拉分割字符串元组
- 17. 斯卡拉:获取列表的元素与两个限制
- 18. 斯卡拉,转换多个名单,元组
- 19. 斯卡拉在元组列表中的每个第一要素获得的第二个元素的最大
- 20. 斯卡拉 - 列表元组列表的隐含证据
- 21. 斯卡拉元组函数组合
- 22. 如何使表单元素与另一个元素共享引导列
- 23. 斯卡拉。在一个元素中的foreach日期列表
- 24. 斯卡拉。获取列表的第一个元素
- 25. 将基于一个共同的元组元素的元组的列表
- 26. 斯卡拉分区一组
- 27. 斯卡拉foldLeft添加一个元素?
- 28. 斯卡拉 - 转换列表[字符串]元组列表[(Int,Int)]
- 29. 如何合并由相同元素的元组在斯卡拉
- 30. 在斯卡拉如何在阵列组连续的元素