在Julia意外行为中数字的字符串表示上循环

在Julia意外行为中数字的字符串表示上循环,julia,ijulia-notebook,Julia,Ijulia Notebook,我试图理解为什么int(“0”)>0的计算结果为false,而all([int(I)>0表示“0”中的I)的计算结果为true。有趣的是,[all(i!=“0”表示“0”中的i)]也计算为true 如何让我的列表理解正确计算,即捕捉“0”int被不同类型调用,因为迭代字符串会得到Char对象,而不是长度为1的字符串: julia> typeof("0") ASCIIString (constructor with 2 methods) julia> [typeof(x) for x

我试图理解为什么
int(“0”)>0
的计算结果为
false
,而
all([int(I)>0表示“0”中的I)
的计算结果为
true
。有趣的是,
[all(i!=“0”表示“0”中的i)]
也计算为
true


如何让我的列表理解正确计算,即捕捉“0”

int
被不同类型调用,因为迭代字符串会得到
Char
对象,而不是长度为1的字符串:

julia> typeof("0")
ASCIIString (constructor with 2 methods)

julia> [typeof(x) for x in "0"]
1-element Array{Type{Char},1}:
 Char
当给定一个
Char
时,Julia的
int
更像Python的
ord

julia> int("0")
0

julia> int("0"[1])
48
这就产生了你所看到的:

julia> [int(i) for i in "0"]
1-element Array{Int32,1}:
 48

julia> [int(i) > 0 for i in "0"]
1-element Array{Bool,1}:
 true

julia> all([int(i) > 0 for i in "0"])
true
有很多方法可以使其按预期运行,例如使用
parseint
或简单地转换回字符串:

julia> [parseint(i) for i in "0"]
1-element Array{Int32,1}:
 0

julia> [int(string(i)) for i in "0"]
1-element Array{Int32,1}:
 0