Julia集合

Julia集合

Julia中的集合类型Set等效于数学中的集合定义,其中的元素互不相同。原型为:

Set{T} <: AbstractSet{T}
  dict::Dict{T, Nothing}

可见该类型以Dict为基础,也是无序的。

实例化时不能直接将元素单个以参数的形式提供给构造函数,而需要以可迭代数集的方式提供,如元组、数组或迭代器等。例如:

julia> a = Set( [1, 2, 2, 3, 3, 4, 4] )   # 通过数组构造,重复元素被忽略
Set([4, 2, 3, 1])

julia> b = Set( (1, 2, 3, 4) )              # 通过元组构造
Set([4, 2, 3, 1])

julia> p
Dict{String, Int64} with 2 entries:
  "B" => 2
  "A" => 3

julia> c = Set(keys(p))                      # 借用上节中Dict键集合的迭代器
Set(String["B", "A"])

可见,如果输入的迭代数集中元素重复,则会被Set自动忽略而仅保留一个。

需要注意的是,无法通过索引的方式对Set进行元素访问,只能以迭代遍历的方式进行访问:

julia> for i in a
          print(i, " ")
        end
4 2 3 1

可以使用in作为操作符判断某个元素是否在Set中,例如:

julia> 4 in a
true

julia> 8 in a
false

对Set对象可以进行经典的集合运算,包括求交集、并集、补集等,例如:
Julia集合

当然,也支持集合的包含关系判断,例如:
Julia集合

如果要判断一个集合是否是空集,可使用isempty()函数:

julia> isempty(a)
false

该函数实际适用于Julia中的各种数集,包括元组、数组、字典等。

如果要清除集合中的所有元素,直接调用empty!()函数即可:

julia> empty!(a)
Set{Int64}()

注意
函数名存在标识符!(感叹号),表示会修改输入的数据,所以一旦调用,对象中的所有元素将会消失,使用时请小心。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!