小白教程
所有教程
关于
Search
172.71.254.219
172.71.254.219
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“Julia 元组”的源代码
本页内容
上一节:
Julia_数组
下一节:
Julia_数据类型
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:Julia 元组}}[[Category:Julia 教程|6]] = Julia 元组 = Python 的元组与数组类似,都是有序的元素集合,不同之处在于元组的元素不能修改。 另外元组使用小括号 (...),数组使用方括号 [...]。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可,数组中的很多函数也可以在元组中使用。 如下实例: <sample title="" desc="" lang="julia" hererun="1"> julia> tupl=(5,10,15,20,25,30) # 创建一个元组 (5, 10, 15, 20, 25, 30) julia> tupl (5, 10, 15, 20, 25, 30) julia> tupl[3:end] # 输出第三个到最后一个元素的元组 (15, 20, 25, 30) julia> tupl = ((1,2),(3,4)) # 创建二维元组 ((1, 2), (3, 4)) julia> tupl[1] # 访问二维元组元素,输出第一维元组 (1, 2) julia> tupl[1][2] # 访问二维元组元素,输出第一维元组的第二个元素 2 </sample> 元组的元素是不能修改,如果我们尝试修改它就回报错: <sample title="" desc="" lang="julia" hererun="1"> julia> tupl2=(1,2,3,4) (1, 2, 3, 4) julia> tupl2[2]=0 ERROR: MethodError: no method matching setindex!(::NTuple{4, Int64}, ::Int64, ::Int64) Stacktrace: [1] top-level scope @ REPL[8]:1 </sample> == 元组命名 == 我们可以为元组命名,从而可以更方便的访问它。 以下列出了几种不同元组的命名方式。 === 1、元组中的键(key)和值(value)分开命名 === 元组中的键(key)和值(value)可以分开独立命名,实例如下: <sample title="" desc="" lang="julia" hererun="1"> julia> names_shape = (:corner1, :corner2) (:corner1, :corner2) julia> values_shape = ((100, 100), (200, 200)) ((100, 100), (200, 200)) julia> shape_item2 = NamedTuple{names_shape}(values_shape) (corner1 = (100, 100), corner2 = (200, 200)) </sample> 我们可以使用 . 点号来访问元组: <sample title="" desc="" lang="julia" hererun="1"> julia> shape_item2.corner1 (100, 100) julia> shape_item2.corner2 (200, 200) </sample> === 2、键(key)和值(value)同时在一个元组中 === 键(key)和值(value)可以同时在一个元组中,实例如下: <sample title="" desc="" lang="julia" hererun="1"> julia> shape_item = (corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0)) (corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0)) </sample> 我们可以使用 . 点号来访问元组: <sample title="" desc="" lang="julia" hererun="1"> julia> shape_item.corner1 (1, 1) julia> shape_item.corner2 (-1, -1) julia> shape_item.center (0, 0) julia> (shape_item.center,shape_item.corner2) ((0, 0), (-1, -1)) </sample> 我们还可以像使用普通元组一样访问所有值,如下所示: <sample title="" desc="" lang="julia" hererun="1"> julia> c1, c2, center = shape_item (corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0)) julia> c1 (1, 1) </sample> === 3、合并两个已命名的元组 === 我们可以使用 merge() 函数来合并两个已命名的元组,实例如下: <sample title="" desc="" lang="julia" hererun="1"> julia> colors_shape = (top = "red", bottom = "green") (top = "red", bottom = "green") julia> shape_item = (corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0)) (corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0)) julia> merge(shape_item, colors_shape) (corner1 = (1, 1), corner2 = (-1, -1), center = (0, 0), top = "red", bottom = "green") </sample> == 元组作为函数参数 == 以下实例我们创建一个 '''testFunc''' 函数,并将元组 '''options''' 作为参数传入: == 实例:test.jl 文件代码 == <sample title="" desc="" lang="julia" hererun="1"> # 创建函数 function testFunc(x, y, z; a=10, b=20, c=30) println("x = $x, y = $y, z = $z; a = $a, b = $b, c = $c") end # 创建元组 options = (b = 200, c = 300) # 执行函数,元组作为参数传入 testFunc(1, 2, 3; options...) </sample> 使用 julia 命令执行以上文件,输出结果为: <pre>$ julia test.jl x = 1, y = 2, z = 3; a = 10, b = 200, c = 300</pre> 如果指定的参数在元组后面,则会覆盖元组中已有的参数: <sample title="" desc="" lang="julia" hererun="1"> # 创建函数 function testFunc(x, y, z; a=10, b=20, c=30) println("x = $x, y = $y, z = $z; a = $a, b = $b, c = $c") end # 创建元组 options = (b = 200, c = 300) # 执行函数,元组作为参数传入,指定参数在元组前,不会覆盖 testFunc(1, 2, 3; b = 1000_000, options...) # 执行函数,元组作为参数传入,指定参数在元组后,会覆盖 testFunc(1, 2, 3; options..., b= 1000_000) </sample> 使用 julia 命令执行以上文件,输出结果为: <pre>$ julia test.jl x = 1, y = 2, z = 3; a = 10, b = 200, c = 300 x = 1, y = 2, z = 3; a = 10, b = 1000000, c = 300</pre>
返回至“
Julia 元组
”。
上一节:
Julia_数组
下一节:
Julia_数据类型