我在 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
使用
input_string = "200"
我希望这会返回 temp = [2 0 0]
,但出于某种原因,我返回了一个 3 元素的 Array{Int64,1} 值 [50, 48, 0].
有没有办法让我理解这一点?
最佳答案
这有几件事:
input_string[i]
)会给你一个类型为 Char
的字符. temp[i] = ...
) 时,Julia 将右侧转换为与数组 temp
相同的元素类型. Char
(右手边)到 Int
(这是 temp
的元素类型)给出与字符对应的 ASCII 值。 字符串
"200"
由字符 '2'
组成, '0'
和 '0'
,其中 ASCII 值是 50
, 48
和 48
所以我们期望 temp
成为 [50, 48, 48]
但是循环有一个错误,因为它应该检查 i <= length(input_string)
,所以最后一个元素是 0
有没有从初始化。这是我为此编写的代码:
function str_to_ints(str)
r = Int[]
for c in str
ci = parse(Int, c)
push!(r, ci)
end
return r
end
例子:
julia> str_to_ints("200")
3-element Array{Int64,1}:
2
0
0
关于julia - 更改 Julia 数组中的值并得到奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62352674/