如果我想將諸如「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 –