gpt4 book ai didi

F# 序列差异

转载 作者:行者123 更新时间:2023-12-03 23:24:02 27 4
gpt4 key购买 nike

给定两个序列,如何获取属于这两个序列的所有元素或其中一个序列唯一的所有元素?

例子:

let a = [1..10]
let b = [3; 5; 7]

我如何计算 3 5 和 7(列表共有的所有元素)和 1、2、4、6、8、9、10(所有不共有的元素)

谢谢

最佳答案

你要做的不过是intersection的简单集合操作和 difference (或相对补语)。

F# 有 Set模块来帮助我们。这应该做的工作:

let a = [1 .. 10]
let b = [3; 5; 7]

let intersection = Set.intersect (Set.ofList a) (Set.ofList b)
let difference = (Set.ofList a) - (Set.ofList b)

然后,您当然可以使用 Set.toList 将结果转换回列表。 , 如果你希望。

正如 Mehrdad 所指出的,这也可以使用 LINQ(甚至是 BCL 中的 HashSet 类)来完成,但这里的方法似乎最符合 F# 语言的精神(当然是最好的语法,并且可能是也是最有效的)。

关于F# 序列差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1158114/

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