数値の桁の合計の最適化
数値内の個々の桁の合計を求めることは、一般的なプログラミング タスクです。この問題を解決するには、いくつかのアプローチがあり、それぞれパフォーマンス特性が異なります。
提供されている Python スニペットは、sum(int(digit) for digit in str(number)) を使用して、数値を文字列に変換し、その数値を個別に反復処理します。数字。 sum(map(int, str(number))) を使用する別の解決策では、各桁を整数にマッピングし、それらを合計することで同じ結果が得られます。
これらのアプローチは簡単ですが、より効率的な実装は次のとおりです。これは完全に整数を操作することによって実現されます。次のコード スニペットでは、while ループを使用して各桁を反復処理します。
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
パフォーマンス測定により、次のことがわかります。整数ベースのソリューションは文字列ベースよりも大幅に高速です代替案:
Function | Time Per Loop |
---|---|
sum_digits3 | 479 ns |
sum_digits | 574 ns |
sum_digits2 | 716 ns |
sum(map(int, str(n))) | 1.42 us |
sum([int(digit) for digit in str(n)]) | 1.52 us |
sum(int(digit) for digit in str(n)) | 2.04 us |
したがって、最適な速度を実現するには、この説明で説明されている整数ベースのアプローチのいずれかを使用することをお勧めします。
以上がPython で数値の桁を合計する最も速い方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。