如何使用给定的行数和列数创建基于列表的1
矩阵?例如,像:
row=3,column=4 -> [[1,1,1,1],[1,1,1,1],[1,1,1,1]]
答案 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]