arrays - 检查列表和数组是否相等 F#

标签 arrays list f# compare

我正在尝试比较列表和数组,看看它们是否相等。假设我们有一个列表 list = [1;2;3;4] 和一个数组 ar = [|1;2;3;4|]。如果相等,该函数应返回 true,如果不相等,则应返回 false。我是这样做的:

let list = [1;2;3;4]
let ar = [|1;2;3;4|]

let list' = Array.toList ar
(list = list')

所以基本上我所做的就是简单地转换和比较两个列表。我的问题是有没有其他方法可以做到这一点,我的意思是不简单地在列表和数组之间转换并且不完全依赖库函数.

最佳答案

您可以利用列表和数组(以及大多数其他集合)实现 seq<'a> 的事实接口(interface)(.NET 术语中的 IEnumerable<T>),因此您可以将它们传递给 Seq 中的函数没有任何转换的模块。这只是使用一个接口(interface),所以没有开销。

我能想到的最简单的检查两个序列是否相同的函数是forall2 ,它采用两个序列并检查谓词是否对成对的元素成立。在这种情况下,谓词只是相等性测试 (fun a b -> a = b)你可以缩写为(=) :

let list = [1;2;3;4]
let ar = [|1;2;3;4|]

Seq.forall2 (=) list ar

关于arrays - 检查列表和数组是否相等 F#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65801604/

相关文章:

php - 如何在数组中查找键?

javascript - 使用 Max/Min 扩展 Javascript 数组原型(prototype)以查找值

Java,将小型二维数组与较大二维数组中的每个可能的迭代进行比较

python - 无法从 Python 进程中返回 append 值

java - rxJava 通过过滤器列表删除列表元素

f# - 受歧视工会中的 curry 争论

lambda - 将 F# func 转换为 Expression<Func<..,..>>

c# - 不安全的性能 C#,删除 long 转换为 int 以访问数组索引

python - 为什么这两种计算总和的方法会产生不同的运行时间

c# - 用于 .NET 的 u3d 或 prc 编写器库