Julia中如何将数值范围数组的每个元素转换为字符串类型
问题描述
- 需求:构造包含指定区间数值、所有元素以字符串类型存储的数组,期望输出示例如下:
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
- 错误尝试:使用
string([0:9...])实现时,返回的是整个数组的字符串形式,将数组整体作为单个字符串值,不符合需求,运行结果如下:
julia> string([0:9...]) "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]"
- 参考效果:Python中实现同等需求的代码如下,可对照理解输出要求:
>>> list('0123456789') ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
解决方案
直接对整个数组对象调用string函数,会将数组整体序列化为单个字符串,要得到每个元素为字符串类型的数组,需要将字符串转换逻辑作用到区间内的每一个元素,常用两种实现方式:
- 广播写法(最简洁,推荐):Julia中函数名后加
.代表广播操作,会自动将函数逐个应用到可迭代对象的每个元素上,无需手动展开区间:
julia> string.(0:9) 10-element Vector{String}: "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
- 推导式写法:遍历区间内的每个数值,单独转换为字符串后收集为数组:
julia> [string(x) for x in 0:9] 10-element Vector{String}: "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
两种写法返回的结果完全一致,均为元素是字符串类型的数组,匹配预期需求。
内容的提问来源于stack exchange,提问作者Naadiyaar
相关产品推荐
相关产品推荐

