我想分裂像斯卡拉列表List(1,2,3,4)
成对(1,2) (2,3) (3,4)
,什么是一个简单的方法来做到这一点?你如何将Scala列表变成对?
23
A
回答
58
val xs = List(1,2,3,4)
xs zip xs.tail
// res1: List[(Int, Int)] = List((1,2), (2,3), (3,4))
由于文档说,zip
返回此列表和其他可迭代的集合形成一个列表 通过成对组合相应的元素。如果其中一个 集合比另一个长,则其余元素 将被忽略。
所以List('a,'b,'c,'d)
拉链与List('x,'y,'z)
是List(('a,'x), ('b,'y), ('c,'z))
与第一个被忽略的最终'd
。
从你的例子中,tail
的List(1,2,3,4)
是List(2,3,4)
,所以你可以看到这些如何将这些拉链成对。
10
要产生对列表(即元组)试试这个
List(1,2,3,4,5).sliding(2).collect{case List(a,b) => (a,b)}.toList
+1
使用'map'而不是'collect' - 这将保存一个'isDefinedAt'调用,并且在突然之间抛出一个异常,如果您的原始集合不再是'List',而是静静地生成空的结果。出于同样的原因,你应该模式匹配'Seq(a,b)'而不是'List(a,b)'。 –
6
相关问题
- 1. 如何将列表变成列表?
- 2. 你如何将精灵变成可变数组的对象?
- 3. F# - 如何将列表变成列表的列表?
- 4. 将Scala Future变成CompletableFuture
- 5. 如何将行变成列?
- 6. 如何将一个列表变成clojure中后续元素对的列表?
- 7. 你如何迭代对象列表?
- 8. 你如何在Scala中将地图序列化为JSON?
- 9. 如何使用ramda将扁平列表变成分层列表?
- 10. 如何将'字符串列表'变成真正的列表?
- 11. Python或C:将对的列表变成连接列表
- 12. 你如何在Scala 2.9中创建100个1的列表?
- 13. Django将列表变成一个列表
- 14. 你将如何实现属性列表?
- 15. 如何将表名变成变量?
- 16. 如何变换成列表查找表
- 17. Python:你如何链接方法列表的对象列表?
- 18. 如何将它变成列表元素中的两列布局?
- 19. 如何将列表与列表配对?
- 20. Python:你如何将一个列表添加到Python列表中?
- 21. 如何基于对象属性将列表对象生成多个列表?
- 22. 如何将Cookies变成Json对象?
- 23. 如何将对象切片成变量
- 24. Scala如何对对象字段列表(Object.field)进行排序?
- 25. 如何将长列表分成4列
- 26. 如何将变量键/值对添加到列表对象?
- 27. 如何使用MySQL将行变成列?
- 28. 你如何迭代对象的成员变量?
- 29. haskell - 将列表的列表变成一个列表
- 30. 你会如何将它变成一个VIM宏?
这简短而聪明,但很难理解我的想法。 –
这将是我的简洁和清晰的首选。有一个upvote。 – Brian
@Luigi:我提出了这个答案,并且更喜欢它到目前被接受的答案,但是解释会比“如果你认为这很难理解的LOL更有帮助”。 –