ホームページ >バックエンド開発 >Python チュートリアル >Python で数値の桁を合計する最も速い方法は何ですか?

Python で数値の桁を合計する最も速い方法は何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-24 02:53:10827ブラウズ

What's the Fastest Way to Sum the Digits of a Number in Python?

数値の桁の合計の最適化

数値内の個々の桁の合計を求めることは、一般的なプログラミング タスクです。この問題を解決するには、いくつかのアプローチがあり、それぞれパフォーマンス特性が異なります。

提供されている 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。