gpt4 book ai didi

haskell - 如何在偶数索引和奇数索引中选择元素?

转载 作者:行者123 更新时间:2023-12-03 14:39:19 27 4
gpt4 key购买 nike

我有一个列表,我想将列表分成两部分,一个包含偶数索引中的元素,另一个包含奇数索引中的元素。
breakByIndexes :: [a] -> ([a], [a])
例如:

> breakByIndexes ["A", "B", "C", "D"]
(["A", "C"], ["B", "D"]

> breakByIndexes ["A", "B", "C", "D", "E"]
(["A", "C", "E"], ["B", "D"]

我有这样的解决方案
breakByIndexes [] = ([], [])
breakByIndexes [e] = ([e], [])
breakByIndexes (e:o:xs) =
let (es, os) = breakByIndexes xs
in (e : es, o : os)

但我很好奇是否可以在不使用递归的情况下实现?
是否可以通过组合 Data.List中的现有功能来实现? ?

最佳答案

是的,你是对的,使用 partition函数来自 Data.List .

Prelude Data.List> (s, u) = partition (even . fst) (zip [0 .. ] "ABCD")
Prelude Data.List> (_, s2) = unzip s
Prelude Data.List> (_, u2) = unzip u
Prelude Data.List> (s2, u2)
("AC","BD")

我是怎么找到这个的?转至 Hoogle并填写 [a] -> ([a], [a]) .

关于haskell - 如何在偶数索引和奇数索引中选择元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49741305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com