作为Haskell中的行列表给出的矩阵的第一列

kjv*_*kjv 3 haskell matrix

如果我有一个矩阵作为行列表[[1,2,3],[4,5,6]],我想返回第一列,[1,4].我是Haskell的绝对初学者,我甚至不知道如何处理嵌套列表.

Jon*_*nas 6

以下代码将完成这项工作:

map head [[1,2,3],[4,5,6]]
Run Code Online (Sandbox Code Playgroud)

map是haskell(和其他函数式编程语言)中最有用的函数之一.给定列表[a,b,c,d]和函数f,map f [a,b,c,d]将返回列表[f a, f b, f c, f d].该head函数提取列表的第一个元素.这就是为什么

map head [[1,2,3],[4,5,6]] ->
[head [1,2,3], head [4,5,6]] ->
[1,4]
Run Code Online (Sandbox Code Playgroud)


Cur*_*son 6

更一般地说:

col :: Int -> [[a]] -> [a]
col n = map (head . drop n)
Run Code Online (Sandbox Code Playgroud)

请记住,如果n大于或等于您提供的任何列表的长度,则会失败.

  • 同样地,`col n = map(!! n)`,我认为这意味着更清楚一点.因人而异. (5认同)