我有两个相同数量的元素列表,例如:[1,2,3]
和['a','b','c']
。
我想以[(1,'a')(2,'b')(3,'c')]
格式合并它们。可能吗?如果是这样,怎么办?我找不到办法。
答案 0 :(得分:5)
答案 1 :(得分:0)
这有三种主要方法。
首先,zip
功能:
> zip [1,2,3] "abc"
[(1,'a'), (2,'b'), (3, 'c)]
这是朋友,zipWith
函数:
> zipWith (,) [1,2,3] "abc"
[(1,'a'), (2,'b'), (3, 'c)]
最后,使用ParallelListComp
扩展名*:
> [(a,b) | a <- [1,2,3] | b <- "abc"]
[(1,'a'),(2,'b'),(3,'c')]
如果您以后正在寻找某个功能,请使用hoogle,这样您就可以查找类型签名和名称。
如果你真的想,你可以明确地定义它:
zip' :: [a] -> [b] -> [(a,b)]
zip' [] _ = []
zip' _ [] = []
zip' (a:as) (b:bs) = (a,b) : zip as bs
*使用-XParallelListComp
致电GHCi或将{-# OPTIONS_GHC -XParallelListComp #-}
添加到您的文件中。