gpt4 book ai didi

F#:从另一个列表中过滤在一个列表中找到的项目

转载 作者:行者123 更新时间:2023-12-01 06:58:44 24 4
gpt4 key购买 nike

假设我有两个列表:

let a = [1 .. 1000]
let b = [250 .. 500]

如何获取包含值 {1-249, 501-1000} 的新列表?

最佳答案

由于您的列表已排序,您可以使用此(非尾递归)函数在线性时间内解决此问题:

let rec except a b =
match (a, b) with
| [], x | x, [] -> x
| x::xs, y::ys ->
if x < y then x :: except xs (y::ys)
elif x > y then y :: except (x::xs) ys
else except xs ys

尾递归版本:
let rec except_tail_recursive a b =
let rec loop acc a b =
match (a, b) with
| [], x | x, [] -> (List.rev acc) @ x
| x::xs, y::ys ->
if x < y then loop (x::acc) xs (y::ys)
elif x > y then loop (y::acc) (x::xs) ys
else loop acc xs ys
loop [] a b

关于F#:从另一个列表中过滤在一个列表中找到的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1506280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com