gpt4 book ai didi

F# 我想过滤我的输出

转载 作者:行者123 更新时间:2023-12-01 08:27:21 27 4
gpt4 key购买 nike

我有一个问题,为了这个问题,我已经简化了。
假设我有 2 个列表。第一个实际上代表一个类列表,但是为了这个目的,假设它只是代表一个整数列表(2,4,6,8,10)。我有另一个表示标志的整数列表,表明我是否希望包含/排除第一组中的相应值。
(这不是最好的例子,但应该足以帮助我解决我的实际问题。 )

let set1 = [2;4;6;8;10]
let set2 = [1;0;0;1;1]

我的想要的输出设置是:

[2;8;10]

这是我的代码:

let solution = 
List.map2 (fun a b ->
match b with
| 1 -> a
| _ -> 0
) set1 set2

这会呈现以下输出:

val solution : int list = [2; 0; 0; 8; 10]

如何过滤掉这些不需要的零?
而不是 | _ -> 0 理想情况下,我想返回一个空值,然后过滤掉所有空值。

您的帮助将不胜感激!

最佳答案

这似乎很容易:

let filterWith set2 set1 =
List.zip set1 set2
|> List.filter (fun (_,x) -> x=1)
|> List.map fst

用法:

let set1 = [2;4;6;8;10]
let set2 = [1;0;0;1;1]

set1 |> filterWith set1

如果您选择为您的 set2 使用 bool 列表,它会变得更好:

let filterWith set2 set1 =
List.zip set1 set2
|> List.filter snd
|> List.map fst

用法:

let set1 = [2;4;6;8;10]
let set2 = [true;false;false;true;true]

set1 |> filterWith set1

关于F# 我想过滤我的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30766674/

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