sum(int(digit) for digit in str(number))
sum(map(int, str(number)))
哪种方法最适合提高速度,还有其他更快的方法吗?
您发布的两行都很好,但您可以纯粹用整数来做,而且效率会最高:
def sum_digits(n):
s = 0
while n:
s += n % 10
n //= 10
return s
或使用divmod
:
def sum_digits2(n):
s = 0
while n:
n, remainder = divmod(n, 10)
s += remainder
return s
更快的是没有增加赋值的版本:
def sum_digits3(n):
r = 0
while n:
r, n = r + n % 10, n // 10
return r
> %timeit sum_digits(n)
1000000 loops, best of 3: 574 ns per loop
> %timeit sum_digits2(n)
1000000 loops, best of 3: 716 ns per loop
> %timeit sum_digits3(n)
1000000 loops, best of 3: 479 ns per loop
> %timeit sum(map(int, str(n)))
1000000 loops, best of 3: 1.42 us per loop
> %timeit sum([int(digit) for digit in str(n)])
100000 loops, best of 3: 1.52 us per loop
> %timeit sum(int(digit) for digit in str(n))
100000 loops, best of 3: 2.04 us per loop
寻找替代算法 因此,需要更有效的替代算法。提前致谢
本文向大家介绍C ++程序中将两个数组按元素求和的位数变成一个新数组,包括了C ++程序中将两个数组按元素求和的位数变成一个新数组的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序来查找两个数组元素的太阳,并将它们存储到单独的数组中。 我们给出了两个数组,我们需要从两个数组中添加相应的索引元素。如果总和不是单个数字,则从数字中提取数字并将其存储在新数组中。 让我们来看一个例子
问题内容: 在这里,我再次提出基本问题,但请耐心等待。 在Matlab中,将数字添加到列表中的元素非常简单: 然后是 在python中,这似乎不起作用,至少在列表上。 是否有一种简单的快速方法将单个数字加到整个列表中。 谢谢 问题答案: 如果要使用数字列表进行操作,最好使用NumPy数组: 给
null 我可以想到蛮力方法。其中我需要放两个从1到N的循环,计算每个x和y对的数字和,并检查它是否是素数。但它不是一个最优解,因为N的范围为10^50。
问题内容: 我很难弄清楚如何移动数组元素。例如,给出以下内容: 我为什么能写入移动功能之前? 还是之后? 移动后,应更新其余元素的索引。这意味着在第一个示例中,移动后arr [0] =’a’,arr [1] =’d’arr [2] =’b’,arr [3] =’c’,arr [4] = ‘e’ 这似乎应该很简单,但是我无法将其包裹住。 问题答案: 如果您想在npm上使用一个版本,则array-mo
本文向大家介绍在一个两位数之间插入一个数字,就变成一个三位数。例如:在72中间插入数字6,就变成了762。有些两位数中间插入数字后所得到的三位数是原来两位数的9倍,求出所有这样的两位数。相关面试题,主要包含被问及在一个两位数之间插入一个数字,就变成一个三位数。例如:在72中间插入数字6,就变成了762。有些两位数中间插入数字后所得到的三位数是原来两位数的9倍,求出所有这样的两位数。时的应答技巧和注