小编Leo*_*reo的帖子

如何在 OCaml 中不使用 List.filter 来过滤列表?

我必须编写一个函数,给定两个列表,它返回第一个列表的元素列表,其平方出现在第二个列表中(抱歉我的英语)。我无法递归执行此操作,也无法使用 List.filter。这就是我所做的:

let lst1= [1;2;3;4;5];;
let lst2= [9;25;10;4];;

let filquadi lst1 lst2 =
  let aux = [] in 
  List.map(fun x -> if List.mem (x*x) lst2 then x::aux else []) lst1;;
Run Code Online (Sandbox Code Playgroud)

它可以工作,但当数字不满足 if 语句时,它也会打印 []:

filquadi lst1 lst2 ;;
- : int list list = [[]; [2]; [3]; []; [5]]
Run Code Online (Sandbox Code Playgroud)

如何返回数字列表而不是数字列表的列表?

- : int list = [2;3;5]
Run Code Online (Sandbox Code Playgroud)

ocaml list

0
推荐指数
1
解决办法
681
查看次数

标签 统计

list ×1

ocaml ×1