90
A
回答
144
利用partition
方法:
scala> List(1,2,3,4).partition(x => x % 2 == 0)
res0: (List[Int], List[Int]) = (List(2, 4),List(1, 3))
13
你可能想看看scalex.org - 它允許你通過他們的簽名搜索功能中階標準庫。例如,鍵入以下內容:
List[A] => (A => Boolean) => (List[A], List[A])
你會看到分區。
118
11
如果你需要一些額外的東西,你也可以使用foldLeft。我只是寫了一些這樣的代碼時,分區沒有削減它:
val list:List[Person] = /* get your list */
val (students,teachers) =
list.foldLeft(List.empty[Student],List.empty[Teacher]) {
case ((acc1, acc2), p) => p match {
case s:Student => (s :: acc1, acc2)
case t:Teacher => (acc1, t :: acc2)
}
}
+1
非常好的使用元組和foldLeft的方法。我最終使用了一個ListBuffer來有效地保持這兩個列表的順序相同,但否則它就是我所需要的。 –
0
如果要拆分成列表超過2件,而忽視了界限,你可以使用這樣的事情(修改,如果你需要搜索整數)
def split(list_in: List[String], search: String): List[List[String]] = {
def split_helper(accum: List[List[String]], list_in2: List[String], search: String): List[List[String]] = {
val (h1, h2) = list_in2.span({x: String => x!= search})
val new_accum = accum :+ h1
if (h2.contains(search)) {
return split_helper(new_accum, h2.drop(1), search)
}
else {
return accum
}
}
return split_helper(List(), list_in, search)
}
// TEST
// split(List("a", "b", "c", "d", "c", "a"), {x: String => x != "x"})
相關問題
- 1. 將列分成兩部分
- 2. 如何通過使用java8謂詞分區列表?
- 3. 拆分Prolog的謂詞分爲兩個部分,並執行在
- 4. 如何將一行分成兩部分?
- 5. 如何將文字分成兩部分
- 6. Matlab - 將列分成兩部分(高效)
- 7. 序言元謂詞:應用謂詞列表,通過恆定
- 8. 將nltk.FreqDist單詞分成兩個列表?
- 9. 將wordpress分成兩部分
- 10. 將PDL分成兩部分
- 11. 通過謂詞
- 12. 在引導程序中將列分成兩部分3
- 13. 如何根據謂詞分割一個序列?
- 14. 如何通過序言中的謂詞傳遞一個列表
- 15. 如何通過分離分裂句兩個部分只有
- 16. SWI-Prolog謂詞示例第2部分
- 17. 如何將點分成兩組 - 分佈的上下部分
- 18. 如何根據分隔符將字符串分成兩部分?
- 19. 如何將長單詞分成單詞?
- 20. 將列表分成兩列
- 21. 將2列分成兩列
- 22. 如何將列分成兩組?
- 23. 如何將此字段分成兩列
- 24. 如何將html頁分成兩列?
- 25. 如何將網格行分成兩列?
- 26. Prolog程序使用謂詞將單詞分爲音節
- 27. 沿着UIBezierPath將UIImage分成兩部分
- 28. Coldfusion將數組分成兩部分
- 29. PHP foreach:將循環分成兩部分
- 30. 如何通過謂詞LINQ表達
scalex.org域目前已經死亡。但有替代方案 - http://scala-search.org/--)。 – monnef