你如何解决这个 Haskell 问题?

问题描述 投票:0回答:2

我想定义一个函数replicate,仅使用列表理解来按其值复制数字列表,例如:

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]

我知道这很容易使用“复制”内置函数,但只允许列表理解,我该怎么做?

谢谢!

haskell list-comprehension
2个回答
9
投票

小问题。我是这样解决的。

replicate list = [ a | a <- list, _ <- [1..a]]

前奏>复制[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]

它获取列表中的每个值,创建其自身的多个副本, 然后移动到下一个值。


7
投票

SO是一场狗屎秀。感谢您的搭车。

© www.soinside.com 2019 - 2024. All rights reserved.