创建二维列表矩阵

时间:2013-05-03 20:23:12

标签: list haskell dimensional

如何使用给定的行数和列数创建基于列表的1矩阵?例如,像:

row=3,column=4 -> [[1,1,1,1],[1,1,1,1],[1,1,1,1]]

3 个答案:

答案 0 :(得分:3)

您可以使用replicate

执行此操作
onesMatrix rows cols = replicate rows (replicate cols 1)

答案 1 :(得分:3)

这是使用列表理解的另一种方法。我们来看看基础知识:

Prelude> [ 2*x | x <- [1..4] ]
[2,4,6,8]

因此,为列表[1..4]中的每个元素提供一个数字。为什么不,而不是加倍x,只需要1

Prelude> [ 1 | x <- [1..4] ]
[1,1,1,1]

如果我们想要其中三个,我们可以采用相同的技巧:

Prelude> [ [1|x<-[1..4]] | x<-[1..3] ]
[[1,1,1,1],[1,1,1,1],[1,1,1,1]]

因此我们可以定义

twoDlist r c = [ [1|x<-[1..c]] | x<-[1..r] ]

给出了

Prelude> twoDlist 3 4
[[1,1,1,1],[1,1,1,1],[1,1,1,1]]

答案 2 :(得分:0)

import Control.Applicative
import Data.Functor 

matrix r c = [1] <* [1..c] <$ [1..r]
相关问题