我试图制作一个n * n矩阵 如果n = 2,则得到的矩阵为:
[[(1, 1), (1, 2)], [(2, 1), (2, 2)]]
即,2 * 2矩阵中的可用位置矩阵。
我尝试了以下内容:
myIndex :: Int -> [[(Int, Int)]]
myIndex (n+1) n = []
myIndex 1 n = [zip [1, 1..] [1, 2..n]] ++ myIndex 2 n
但是出了点问题。究竟出了什么问题?
为清楚起见,考虑另一个n = 3的例子:
[[(1, 1), (1, 2), (1, 3)], [(2, 1), (2, 2), (2, 3)], [(3, 1), (3, 2), (3, 3)]]
提前致谢。
答案 0 :(得分:3)
您似乎想要一个像(x, y)
这样的元素列表列表,其中x和y在[1..n]
中。我们来写一下:
myIndex n = map (\x -> map (\y -> (x, y)) [1..n]) [1..n]
另一种说法是列表理解:
myIndex n = [ [(x, y) | y <- [1..n]] | x <- [1..n] ]