OCaml 函数:替换列表中的元素
OCaml function: replace a element in a list
我是 OCaml 的新手,需要一个简单的函数来替换列表中的元素。
过了一会儿我开始做这项工作,但我不想在函数中使用这个计数参数。
let rec replaceelem ls x elem count=
match ls with
| [] -> ls
| h::t -> if (count = x) then
elem::(replaceelem t x elem (count+1))
else
h::(replaceelem t x elem (count+1))
例子
# let a = [1;2;3;4;5];;
val a : int list = [1; 2; 3; 4; 5]
# replaceelem a 3 99 0;;
- : int list = [1; 2; 3; 99; 5]
使用 List.mapi - 在遍历列表时提供元素的索引 -
let replace l pos a = List.mapi (fun i x -> if i = pos then a else x) l;;
如果你想摆脱额外的输入(计数),你可以通过 运行 x-1 在你的递归调用中,并在 x=0 时替换正确的元素。像这样:
let rec replaceelem ls x elem =
match ls with
| [] -> ls
| h::t -> if (x=0) then
elem::(replaceelem t (x-1) elem)
else
h::(replaceelem t (x-1) elem)
我是 OCaml 的新手,需要一个简单的函数来替换列表中的元素。
过了一会儿我开始做这项工作,但我不想在函数中使用这个计数参数。
let rec replaceelem ls x elem count=
match ls with
| [] -> ls
| h::t -> if (count = x) then
elem::(replaceelem t x elem (count+1))
else
h::(replaceelem t x elem (count+1))
例子
# let a = [1;2;3;4;5];;
val a : int list = [1; 2; 3; 4; 5]
# replaceelem a 3 99 0;;
- : int list = [1; 2; 3; 99; 5]
使用 List.mapi - 在遍历列表时提供元素的索引 -
let replace l pos a = List.mapi (fun i x -> if i = pos then a else x) l;;
如果你想摆脱额外的输入(计数),你可以通过 运行 x-1 在你的递归调用中,并在 x=0 时替换正确的元素。像这样:
let rec replaceelem ls x elem =
match ls with
| [] -> ls
| h::t -> if (x=0) then
elem::(replaceelem t (x-1) elem)
else
h::(replaceelem t (x-1) elem)