[英]How to create a new list of lists from a list of lists in Haskell?
我有一個由這樣的列表列表組成的字段:
let list1 = ["a", "abcdefgh", "abc"]
我想獲得一個 5x5 的新字段,這樣可以有超過 5 行或列,但不少於。 如果有超過 5 個符號,則必須通過添加空格 ' ' 或保持原樣從前一個生成它。 對於其他行,不需要空格。 例如:
list2 = ["a ", "abcdefgh", "abc ", " ", " "]
或者:
let list1 = ["a", "abcdefgh", "c", "d", "e", "f"]
list2 = ["a ", "abcdefgh", "c ", "d ", "e ", "f"]
我想過 map、復制和長度,但我有點困惑。 如果可能,請不要使用庫(或僅使用 Data.Map)。 謝謝
您需要確定字符串的長度。 例如,您可以使用lambda 表達式來執行此操作,因此映射如下所示:
func :: [String] -> [String]
func mylines = map (\x -> … ) linesOfFiles ++ replicate (5-length mylines) (replicate 5' ')
其中x
是將被映射的字符串,而…
是該值映射的表達式。 我留下填寫…
作為練習。
通常最好不要使用length
: length
需要線性時間,對於無限列表,這甚至會使程序陷入無限循環。
您可以使用遞歸來執行填充,例如:
padding :: Int -> a -> [a] -> [a]
padding 0 _ xs = …
padding n x [] = …
padding n x (x:xs) = …
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.