更改Julia数组中的值并得到奇怪的结果?
Julia 1.4.2中有以下代码更改Julia数组中的值并得到奇怪的结果?,julia,Julia,Julia 1.4.2中有以下代码 temp = zeros(Int64, length(input_string)) i = 1 while i< length(input_string) temp[i] = input_string[i] i += 1 end temp=0(Int64,长度(输入字符串)) i=1 而i
temp = zeros(Int64, length(input_string))
i = 1
while i< length(input_string)
temp[i] = input_string[i]
i += 1
end
temp=0(Int64,长度(输入字符串))
i=1
而i<长度(输入字符串)
temp[i]=输入字符串[i]
i+=1
结束
使用input\u string=“200”
我希望它返回temp=[2 0 0]
,但出于某种原因,我返回一个3元素数组{Int64,1},其值[50,48,0]。
有没有办法让我理解这一点?有几点:
input\u string[i]
)将为您提供类型为Char
的字符temp[i]=…
),Julia将右侧转换为与数组temp
相同的元素类型Char
(右侧)转换为Int
(这是temp
的元素类型)将给出对应于该字符的ASCII值“200”
由字符'2'
、'0'
和'0'
组成,这些ASCII值是50
、48
和48
,因此我们希望temp
是[50、48、48]
,但循环有一个错误,因为它在转换“200”时应该检查i对于Int
vector[2,0,0]来说,更短的形式就是:
parse.(Int,split("200",""))
或者是快4倍的版本
parse.(Int,(v for v in "200"))
还有10%更好:
parse.(Int,collect("200"))
最后,我能想到的最快的方法是:
[Int(v)-48 for v in "200"]
parse.(Int,collect("200"))
[Int(v)-48 for v in "200"]