gpt4 book ai didi

arrays - f# 找出 2 个 obj[] 列表之间的差异

转载 作者:行者123 更新时间:2023-12-02 06:30:17 26 4
gpt4 key购买 nike

我有 2 个 obj[] 列表 list1 和 list2。 List1 的长度为 8,list2 的长度为 10。 list1 中的数组只存在于 list1 中。 list2 也是如此。但是两者都存在数组。我想知道如何获取 list1 中存在的数组。在我运行代码的那一刻,我得到了两个列表中都存在的数组的列表,但它缺少 list1 独有的数据。我想知道如何获得唯一的 list1 数据。有什么建议么?

let getProdOnly (index:int)(list1:obj[]list)(list2:obj[]list) =
let mutable list3 = list.Empty
for i = 0 to list1.Length-1 do
for j = 0 to list2.Length-1 do
if list1.Item(i).GetValue(index).Equals(list2.Item(j).GetValue(index)) then
System.Diagnostics.Debug.WriteLine("Exists in List 1 and 2")
else
list3 <- list1.Item(i)

最佳答案

像这样的东西:

let ar1 = [|1;2;3|]
let ar2 = [|2;3;4|]
let s1 = ar1 |> Set.ofArray
let s2 = ar2 |> Set.ofArray
Set.difference s1 s2
//val it : Set<int> = set [1]

还有一堆 Array 相关的函数,比如 compareWith,distinct,如果你想直接使用 Arrays 就存在。

但正如之前的答案所指出的,这种类型的命令式代码不是很惯用。尽量避免可变变量,尽量避免循环。例如,它可能可以用 Array.map 重写。

关于arrays - f# 找出 2 个 obj[] 列表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40086947/

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