Creating 2 dimensional list matrix

廉价感情. 提交于 2019-12-31 04:54:04

问题


How do you create a list-based matrix of 1's with given row and column counts? For example, like:

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

回答1:


You can do this with replicate:

onesMatrix rows cols = replicate rows (replicate cols 1)



回答2:


Here's an alternative method using list comprehension. Let's have a look at the basics:

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

So that gives you one number for each element in the list [1..4]. Why not, instead of doubling x, just have a 1:

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

And if we want three of them, we can pull the same trick:

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

Thus we can define

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

which gives

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



回答3:


import Control.Applicative
import Data.Functor 

matrix r c = [1] <* [1..c] <$ [1..r]


来源:https://stackoverflow.com/questions/16366965/creating-2-dimensional-list-matrix

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!