gpt4 book ai didi

functional-programming - 通过查看第二个列表中的 bool 值来过滤一个列表的元素

转载 作者:行者123 更新时间:2023-12-04 02:38:43 25 4
gpt4 key购买 nike

我有两个等长的列表。我想通过查看第二个列表中具有相同索引的元素是否具有真 bool 值来过滤第一个列表的元素。

Example:

[1,2,3,4,5]:int list

[true,false,false,true,false]:bool list

Expected result: [1,4]

我知道有两种方法可以实现这一点:

1) 编写一个接受两个列表的函数。对于第一个列表中我要追加的每个元素,检查第二个列表的当前(头)元素是否为真。

2) 压缩两个列表并根据 bool 值过滤。

应该有更简单的方法,对吧?

最佳答案

不是真的。最干净的方法可能是

List.map (fn (x,y) => x) (List.filter (fn (x,y) => y) (ListPair.zip (L1,L2)))

List.map Option.valOf (List.filter Option.isSome (ListPair.map(fn (x,y) => if y then SOME x else NONE) (L1,L2)))

递归函数也不错:

fun foo ([],[]) = []
| foo ([],L) = raise Fail "Different lengths"
| foo (L,[]) = raise Fail "Different lengths"
| foo (x::xs, b::bs) = if b then x::foo(xs,bs) else foo(xs,bs)

关于functional-programming - 通过查看第二个列表中的 bool 值来过滤一个列表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20346695/

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