我想按位置将元素的arbirtray列表拆分为包含所有偶数和奇数元素的两个新列表。
示例:带有这样的列表:
["a", "b", "c", "d", "e"]
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到两个这样的清单:
(["a", "c", "e"], ["b", "d"])
Run Code Online (Sandbox Code Playgroud)
单遍和更少的代码:
evensAndOdds : List a -> (List a, List a)
evensAndOdds =
List.foldr (\item (a, b) -> (item :: b, a)) ([], [])
Run Code Online (Sandbox Code Playgroud)
这里的技巧是在每次迭代中切换返回的元组的元素的位置,从而交替添加一个元组,而不必跟踪索引。
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |