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


使用 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 , 4848所以我们期望 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/

    相关文章:

    Julia 用希腊大写字母创建符号?

    dataframe - 查找列值在集合中的行(类似于 pandas isin 或 R %in%)

    julia - 从 CSC 矩阵中删除列的最佳方法

    module - 覆盖自定义 Julia 结构的反斜杠

    y=1/x 的 Julia 方法错误

    arrays - Julia 字符数组转字符串

    multithreading - Julia @threads single

    arrays - Julia 中的未初始化数组

    arrays - Julia 在 Gadfly 中绘制未知层数

    julia - 在 Julia 中将对象数组解包为函数参数