Julia中如何对数据结构的第二层进行索引?
Julia 嵌套结构批量取索引的简便方法
直接用广播式的getindex调用是最通用且简洁的解决方案,完全替代你之前的临时方法:
针对向量的向量(或任何可索引的嵌套结构),要获取每个元素的第
n个值,直接写:getindex.(data, n)举个例子:
data = [[1,2,3], [4,5,6], [7,8,9]] getindex.(data, 2) # 输出 [2,5,8]这个方法比你用
[vv...;;][3,:]灵活太多——哪怕子元素长度不一致(比如data = [[1,2], [3], [4,5,6]]),它也能正常返回[1,3,4],不会像转矩阵那样报错。如果是处理字典、自定义类型这类需要取键/属性的场景,同样可以用广播:
- 取字典的某个键:
getindex.(dict_list, :target_key) - 取自定义类型的属性:
getproperty.(obj_list, :target_field)
- 取字典的某个键:
再说说你提到的修改图表标签的场景,不用写带i的循环,用foreach配对元素更清爽:
foreach((series, new_label) -> series[:label] = new_label, plt.series_list, newlabels)
本质上Julia的广播机制就是专门用来处理这种“对集合中每个元素做相同操作”的场景,比手动循环或转结构高效得多,也更符合Julia的惯用写法。
内容的提问来源于stack exchange,提问作者user23090748
相关产品推荐
相关产品推荐

