首先,我不记得这个重复列表的名称。
我有一个清单:
myList = [0, 1, 2]
我想重复列表清单:
[[0,1,2],[1,2,0],...]
我知道我可以做permutations myList
但它不会涵盖重复的部分,例如[[0,0,0],[1,1,1],[1,1,0],...]
所以,我的问题是这种列表的名称是什么。
它不是permutations
,绝对不是combinations
在逻辑上,我相信它是truth table
。
在haskell中是否有内置函数?
答案 0 :(得分:4)
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelude> :m +Control.Monad
Prelude Control.Monad> replicateM 3 [0,1,2]
[[0,0,0],[0,0,1],[0,0,2],[0,1,0],[0,1,1],[0,1,2],[0,2,0],[0,2,1],[0,2,2],[1,0,0],[1,0,1],[1,0,2],[1,1,0],[1,1,1],[1,1,2],[1,2,0],[1,2,1],[1,2,2],[2,0,0],[2,0,1],[2,0,2],[2,1,0],[2,1,1],[2,1,2],[2,2,0],[2,2,1],[2,2,2]]
请注意,基本上,允许值列表的长度决不需要与每个选项列表的长度相关联。
答案 1 :(得分:2)
列表理解
x = [0,1,2]
[[a,b,c] | a<-x, b<-x, c<-x]
[[0,0,0],[0,0,1],[0,0,2],[0,1,0],[0,1,1],[0,1,2],[0,2,0],[0,2,1],[0,2,2],
[1,0,0],[1,0,1],[1,0,2],[1,1,0],[1,1,1],[1,1,2],[1,2,0],[1,2,1],[1,2,2],
[2,0,0],[2,0,1],[2,0,2],[2,1,0],[2,1,1],[2,1,2],[2,2,0],[2,2,1],[2,2,2]]