我是Haskell的新手。所以这可能有点傻。
我想要做的是:
map (\x -> x + **position in list**) [0, 0, 0] => [1, 2, 3]
如何做到这一点?
发布于 2013-05-16 21:38:25
获取索引的最简单方法是使用[0..]
压缩列表(如果您想要基于1的索引,则使用[1..]
),例如:
> zipWith (\i x -> x + i) [1..] [0, 0, 0]
[1,2,3]
发布于 2013-05-16 21:40:11
现在,让我们假设您想要将每个元素与其在列表中的位置配对。做到这一点的简单方法是:
λ> zip [0..] [0, 0, 0]
[(0,0),(1,0),(2,0)]
如果您真正想要的只是索引,那么您只需要[0..]
的第一个n
元素,其中n
是输入列表的长度。所以..。
λ> let xs = [0,0,0]
λ> [0..length xs - 1]
[0,1,2]
或者,等同地,
λ> take (length xs) [0..]
[0,1,2]
https://stackoverflow.com/questions/16588871
复制相似问题