如果我想将诸如“qwertyzxc”(9个元素)(['q','w','e','r','t','y','z','x','c']
)之类的字符列表拆分为长度为3的字符串列表,我就会陷入困境。我该怎么做? 实施例:如何将一个字符串分成长度为3的字符串列表?
输入:['q','w','e','r','t','y','z','x','c']
输出:[['q','w','e'],['r','t','y'],['z','x','c']]
谢谢,一直停留在这个相当长的一段
如果我想将诸如“qwertyzxc”(9个元素)(['q','w','e','r','t','y','z','x','c']
)之类的字符列表拆分为长度为3的字符串列表,我就会陷入困境。我该怎么做? 实施例:如何将一个字符串分成长度为3的字符串列表?
输入:['q','w','e','r','t','y','z','x','c']
输出:[['q','w','e'],['r','t','y'],['z','x','c']]
谢谢,一直停留在这个相当长的一段
如果段长度被固定为3,然后可能会做通过图案如下匹配
segment :: [a] -> [[a]]
segment [] = []
segment [x] = [[x]]
segment [x,y] = [[x,y]]
segment (x:y:z:rest) = [x,y,z] : segment rest
*Main> segment [1,2,3,4,5,6,7,8,9]
[[1,2,3],[4,5,6],[7,8,9]]
我的GHCI返回* Main> [“..3.2.6 ..”,“9..3.5..1”,“.. 18.64 ..”,“.. 81.29 .. ”, “7 ....... 8”, “67.82 .. ..”, “.. .. 26.95”, “8..2.3..9”, “.. 5.1.3 ..”] 。你知道为什么它使用'''而不是'['?' – Zarolan
因为字符串是一个Char列表,而Show实例被定义为以字符串的形式显示字符列表 –
或者你也可以试试这个,具有长度的检查免费:
segment :: [a] -> [[a]]
segment [a,b,c,d,e,f,g,h,i] = [[a,b,c],[d,e,f],[g,h,i]]
segment _ = error "the list hasn't 9 items"
然后尝试:
> segment [1,2,3,4,5,6,7,8,9]
[[1,2,3],[4,5,6],[7,8,9]]
和
> segment [1,2,3,4,5,6,7,8]
*** Exception: the list hasn't 9 items
@Zarolan,字符串是字符列表。 ghci通常显示列表'h':'o':'l':'a':[]'as'“hola” – Nykros
p3::[a] -> [[a]]
p3 [] = []
p3 l = take 3 l : (p3 $ drop 3 l)
,你可能会注意到,你可以很容易地把它转化为的pN
如果在一个更普遍的版本名单不能被三分之一? –
输入总是9的大小。这只是它被利用的方式。如果它不是9,我想它会给你一个错误信息,说它不是正确的大小。 – Zarolan
Data.List.Split.chunksOf –