Python和Julia计算函数的方式不同吗?

4

Python 3的计算

N=123456789
sum(map(int,str(N))            ---> 45

Julia 0.6.2计算

N = 123456789
sum([Int(ch) for ch in "$N"])  ---> 477

N = 123456789
sum(map(Int, collect("$N")))  --->  477

为什么会这样呢?
1个回答

10

因为Python中相当于您的Julia语句的等效语句是:

N=123456789
print( sum(map(ord,str(N))))

输出:

477

它在对'1'+'2'+...'9'的ASCII码值求和,而不是将字符串中的每个字符转换为int再求和ints

这两者不同:

N=123456789
sum(map(int,str(N))

它将长整数转换为字符串,将每个字符提供给int()函数,该函数将'1'转换回1(而不是ord('1')),然后将数字加到45


3
sum(digits(N)) 是 Julia 代码中与 Python 代码相对应的部分。 - niczky12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接