我在徘徊,是否有可能将一个元组(其第一个元素存储第二个元素的出现次数)转换为单个元素列表,例如:
[(2,'a'),(1,'b'),(4,'c')] ~> ['a','a','b','c','c','c','c']
此类数据类型的定义为[(Int, a)]
(在此示例中,我选择a
作为字符)。
答案 0 :(得分:4)
如果您正在学习基础知识并且应该自己构建基本功能,则此问题有两个部分:
DECLARE BEGIN END;
)。您可以将其分为两个功能。处理所有元组的那个将称为仅处理每个元组一个的一个。
尝试首先自行解决,但如果遇到困难,以下内容将破坏代码的基本结构(包括两个函数的基本用例和递归用例模式),但并非如此。完成的代码本身:
(2, 'a')
答案 1 :(得分:3)
您尝试过concatMap吗?
示例列表:
ls = [(2,True),(1,False),(4,True)]
concatMap (\tp -> replicate (fst tp) (snd tp)) ls
您先映射函数,然后将其展平,这样您便获得了最终列表:
=> [True,True,False,True,True,True,True]