查看原文
其他

Julia 笔记之元组

JunJunLab 老俊俊的生信笔记 2022-08-17


内卷会使社会进步吗

1引言

介绍 julia 中的元组结构。

内容摘抄自 Think julia 书籍。

2元组不可变

和 python 的元组一样,julia 中的元组中的元组也是不可变的,使用 逗号 或者 括号 组成元组结构:

julia> t = 'a''b''c''d''e'
('a''b''c''d''e')

julia> t = ('a''b''c''d''e')
('a''b''c''d''e')

如果只有一个元素,得在元素后面添加逗号:

julia> t1 = ('a',)
('a',)
julia> typeof(t1)
Tuple{Char}

# 不加逗号
julia> t2 = ('a')
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
julia> typeof(t2)
Char

使用 tuple 函数创建空元组:

julia> tuple()
()

可以储存多种不同类型的元素:

julia> t3 = tuple(1'a'pi)
(1'a'π = 3.1415926535897...)

可以使用中括号加索引,获取元组元素:

julia> t = ('a''b''c''d''e');

julia> t[1]
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)

也可以切片:

julia> t[2:4]
('b''c''d')

修改元素内容则会报错:

julia> t[1] = 'A'
ERROR: MethodError: no method matching setindex!(::NTuple{5,Char}, ::Char, ::Int64)

3数组和元组

使用 zip 函数可以连接多个元素,返回元组结构:

julia> s = "abc";

julia> t = [123];

julia> zip(s, t)
Base.Iterators.Zip{Tuple{String,Array{Int64,1}}}(("abc", [123]))

julia> for pair in zip(s, t)
           println(pair)
       end
('a'1)
('b'2)
('c'3)

也可以使用 collect 函数获取 zip 结果中的元素:

julia> collect(zip(s, t))
3-element Array{Tuple{Char,Int64},1}:
 ('a'1)
 ('b'2)
 ('c'3)

如果两个数据元素个数不一致,则取最短的元素个数进行配对:

julia> collect(zip("Anne""Elk"))
3-element Array{Tuple{Char,Char},1}:
 ('A''E')
 ('n''l')
 ('n''k')

可以使用 for 循环遍历数组中的元组中的元素:

julia> t = [('a'1), ('b'2), ('c'3)];

julia> for (letter, number) in t
           println(number, " ", letter)
       end
1 a
2 b
3 c

enumerate 函数可以获取元素的索引内容:

julia> for (index, element) in enumerate("abc")
           println(index, " ", element)
       end
1 a
2 b
3 c

4字典和元组

遍历字典的键和值:

julia> d = Dict('a'=>1'b'=>2'c'=>3);

julia> for (key, value) in d
           println(key, " ", value)
       end
1
3
2

把数组中的元组转为字典:

julia> t = [('a'1), ('c'3), ('b'2)];

julia> d = Dict(t)
Dict{Char,Int64} with 3 entries:
  'a' => 1
  'c' => 3
  'b' => 2

zip 函数返回结果转为字典:

julia> d = Dict(zip("abc"1:3))
Dict{Char,Int64} with 3 entries:
  'a' => 1
  'c' => 3
  'b' => 2




  老俊俊生信交流群 ,QQ,


老俊俊微信:


知识星球:



今天的分享就到这里了,敬请期待下一篇!

最后欢迎大家分享转发,您的点赞是对我的鼓励肯定

如果觉得对您帮助很大,赏杯快乐水喝喝吧!



  





GFF3 处理 GFF 注释文件

Sam 文件 flag 研究

Ribo-seq 质控之 reads 分布特征

Julia 笔记之字典

Cell 文章代码重改复现测试

Julia 笔记之数组

Julia 笔记之函数

Molecular Cell 文章主图结果复现

Julia 笔记之循环和条件语句

ggtranscript 绘制转录本结构

◀...

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存