我想知道是否有一个列表函数允许您在列表中的每个元素之间添加一个分隔符。
例如:
[1;2;3;4;5] -> [1;0;2;0;3;0;4;0;5]
答案 0 :(得分:3)
如果您的意思是OCaml标准库中的函数,则没有这样的函数。您可以在OCaml manual中自行查找此信息。列表函数描述为here。
Core list module有Core_list.intersperse
,完全符合您的描述。
Batteries list module有BatList.interleave
,这也完全符合您的描述(再多一点)。
答案 1 :(得分:1)
你可以像这样定义一个函数:
let rec intersperse sep ls =
match ls with
| [] | [_] -> ls
| hd::tl -> hd :: sep :: intersperse sep tl
示例用法:
intersperse 0 [1; 2; 3; 4; 5]
(* Returns: [1; 0; 2; 0; 3; 0; 4; 0; 5] *)