我想分裂像斯卡拉列表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更有幫助」。 –