好久以前用过一次,后来就忘了。。。扎心,如今记录一下python
PS:这几种函数其实不限于swift内的,在JavaScript、python、DB等其余语言,应该也有相似用法,这里我只简单讲了在swift内的用法。swift
1、概念介绍数组
intersection(_ :) 建立一个只包含两个公共值的新集合。(交集)
symmetricDifference(_ :) 建立一个新集合,其值集在两个集合中,但不能同时存在。(非交集)
union(_ :) 建立一个包含两个集合中的全部值的新集合。(合集)
subtracting(_ :) 建立一个值不在指定集中的新集。(补集)
2、举个例子函数
咱们新建一个playground(方便测试)测试
let list1:Set = ["1","2","3"] let list2:Set = ["2","3","4"] //list1和list2都有的 print(list1.intersection(list2)) //既不在list1,也不在list2内 print(list1.symmetricDifference(list2)) //list1和list2加起来的全部数据,但不会重复 print(list1.union(list2)) //属于list1,但不属于list2 print(list1.subtracting(list2))
结果:spa
此外,Set还有其余几种方法:code
集合的成员和相等(Set Membership and Equality) 经过"=="判断两个集合是否包含全部相同的元素 经过"isSubset(of:)"方法判断前者是不是后者的子集。 经过"isSuperset(of:)"方法判断后者是不是前者的子集。 经过"isStrictSubset(of:)"或者"isStrictSuperset(of:)"判断是不是真子集(为子集,且不相等)。 经过"isDisjoint(with:)"方法判断两个集合是否有相同的元素,就是判断两个集合是否有交集。 let s1: Set = ["1", "2"] let s2: Set = ["1", "2", "3", "4", "5"] let s3: Set = ["4", "5"] s1.isSubset(of: s2) // true s2.isSuperset(of: s1) // true 3.isDisjoint(with: s2) // true
补充一下:blog
目前在swift中,以上函数只能用于集合类(Set <Element>),但若是咱们用的是其余集合类型,好比数组([int])、字典([Int: String])ip
咱们须要先转换下类型,以下:it
let list1:[String] = ["1","2","3"] let list2:[String] = ["2","3","4"] let s1 = Set(list1) let s2 = Set(list2) print(s1.intersection(s2)) print(s1.symmetricDifference(s2)) print(s1.union(s2)) print(s1.subtracting(s2))
有时候,当须要对数据进行相似处理,用集合能够简单的实现以上效果。
enjoy~