• Julia元组、字典、集合


    Julia系列:编程初步🔥数组

    作为通用编程语言,除了数组之外,julia实现了元组、字典、集合等数据结构

    元组

    与向量类似,也是一维的数据结构,并且对数据类型无要求,从创建流程来说,向量用方括号创建,元组用圆括号创建,并且支持索引,下标从1开始

    x = (1, "a")    # (1, "a")
    x[1]            # 1
    x[2]            # "a"
    x[1]=1  # 报错
    
    • 1
    • 2
    • 3
    • 4

    除了普通的元组之外,Julia还支持带有键的元组,

    y = (; name="micro", age=7) # (name = "micro", age = 7)
    
    • 1

    带键元组支持两种索引方式,一种是符号索引,一种是点索引,前者更像是字典,后者更像是类

    y[:name]    # "micro"
    y.age       # 7
    
    • 1
    • 2

    无论是普通元组,还是带有名字的元组,其内部元素都是固定的,不支持修改,这是元组与向量以及字典的区别。

    字典

    字典就是键值对结构,通过键来索引值,并且内部元素可动态修改

    d = Dict("name"=>"micro", "age"=>7)
    d["name"]       # "micro"
    d["age"] = 8    #8
    println(d)
    # Dict{String, Any}("name" => "micro", "age" => 8)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    初学者容易忘记调用Dict,而写为如下形式

    ps = ("name"=>"micro", "age"=>7)
    
    • 1

    这个ps其实是一个元组,而其中的元素xx=>yy则是一个Pair。

    ps[1]           # "name" => "micro"
    typeof(ps[1])   # Pair{String, String}
    
    • 1
    • 2

    Pair支持方括号索引,也可以通过first和last来获取元素

    ps[1][1]    # "name"
    last(ps[1]) # "micro"
    
    • 1
    • 2

    集合

    Julia中的集合,和数学上的集合有个相似的性质,即没有重复元素,可通过函数Set生成

    Set(x)  # Set{Any} with 2 elements: "a" 1
    Set(y)  # Set{Any} with 2 elements: 7 "micro"
    Set([1,2,3,3])
    #= Set{Int64} with 3 elements:
      2
      3
      1
    =#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Julia中为集合提供了计算函数以及运算符

    功能函数形式运算符形式
    并集union(A, B)A ∪ B
    交集intersect(A, B)A ∩ B
    差集setdiff(A, B)A \ B
    对称差集symdiff(A, B)(A∖B)∪(B∖A)
    判断相等issetequal(A, B)
    判断子集issubset(A, B)A ⊆ B

    在Julia命令行中,这些特殊符号可通过\xxx然后按下tab键打出,语法与markdown相同

    \cup\cap
    \subseteq\nsubseteq
    \supseteq\nsupseteq
    \in\ni
    \notin\nni

    下面做一个简单的测试

    A = Set([1,2,3,4,5])
    B = Set([2,3,4])
    A ∪ B   # 5 4 3 2 1 
    A ∩ B    # 4 2 3
    3 in A   # true
    3 ∈ A   # true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    共性

    这些数据结构有一个共性,它们可以快速匹配等号左边的变量,并进行赋值

    a,b = x # a=1, b="a"
    a,b = d # a = "name" => "micro"; b = "age"  => 8
    
    • 1
    • 2

    但集合本质上是无序的,所以并不建议用这种方法赋值,比如下面的案例中,A在创建时的顺序明明是1, 2, 3, 4, 5,但对a,b 赋值的结果却是5和4。

    a,b = A # a = 5, b = 4
    
    • 1
  • 相关阅读:
    NVIDIA全息VR显示专利:内含多种光学方案
    windows系统redis和ARDM(redis客户端)下载安装步骤【非常详细】
    ELK部署Redis+Keepalived高可用环境
    OpenCV之ellipse函数
    Redis-使用jedis连接linux中redis服务器失败的解决方案
    数据库的概念和sql语句
    SAP 采购发票预制 MIR7 <转载>
    WPF 2024 金九银十 最新 高级 架构 面试题 C#
    随机森林知识点小总结
    2022年IB TOK新题介绍
  • 原文地址:https://blog.csdn.net/m0_37816922/article/details/133294913