注意事项:julia集合类型的数据是否相等的比较

不管数组还是集合,判断他们的内容是否相等的时候,要特别小心,不能凭空想象,随意使用以下的运算符:【==】、【===】、【!=】、【!==】,详细资料请查官方文档。

集合类型判断内容是否相等: issetequal
issetequal(a, b) -> Bool
Determine whether a and b have the same elements. Equivalent to a ⊆ b && b ⊆ a but more efficient when possible.

之前自己遇到的错误,我是想判断他们的内容是否相等,也就是数学意义上的集合相等,然后程序出现很奇怪的结果。

Set(["yx", "yc"]) !== Set(["yx", "yc"])    #true
Set(["yx", "yc"]) == Set(["yx", "yc"])     #true
Set(["yx", "yc"]) != Set(["yx", "yc"])     #false
!(Set(["yx", "yc"]) == Set(["yx", "yc"]))  #false

issetequal(Set(["yx", "yc"]),Set(["yc", "yx"])) #true
issetequal(Set(["yx", "yc"]),Set(["yx", "yc"])) #true


["yx", "yc"] !== ["yx", "yc"]    #true
["yx", "yc"] == ["yx", "yc"]     #true
["yx", "yc"] != ["yx", "yc"]     #false
!(["yx", "yc"] == ["yx", "yc"])  #false

但是给定两个数组[1,2,3]和[3,2,1],如果你用issetequal判断,从集合的数学意义上来讲他们是相等的,但是,直观上来讲,这两个数组是不想等的,因为他的顺序不一样。

all([1,2,3] .== [1,3,2])       #false  判断对应位置的item是否相等
issetequal([1,2,3] , [1,3,2])  #true   

总结: 逻辑运算符,需要熟练掌握和区分,在写代码的时候,切忌望文生义随便使用,不然将造成灾难性后果。

==,===,!=,!== 用法待续......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容