我想定义一个函数复制,仅使用列表推导来复制数值列表,例如:
replicate [5,1,3,2,8,1,2]
output: [5,5,5,5,5,1,3,3,3,2,2,8,8,8,8,8,8,8,8,1,2,2]
我知道这很容易使用内置函数的'replicate',但只允许列表理解,我该怎么做?
谢谢!
答案 0 :(得分:9)
整洁的小问题。我这样解决了。
replicate list = [ a | a <- list, _ <- [1..a]]
前奏&GT;复制[5,1,3,2,8,1,2]
[5,5,5,5,5,1,3,3,3,2,2,8,8,8,8,8,8,8,8,1,2,2]
它会获取列表中的每个值,创建自己的许多副本, 然后移动到下一个值。
答案 1 :(得分:7)
踢腿:
import Control.Monad
import Control.Monad.Instances
repList = concatMap $ join replicate