Maison >développement back-end >Tutoriel Python >Quel est le moyen le plus rapide de additionner les chiffres d'un nombre en Python ?

Quel est le moyen le plus rapide de additionner les chiffres d'un nombre en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-24 02:53:10828parcourir

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

Optimisation de la sommation des chiffres d'un nombre

Trouver la somme des chiffres individuels dans un nombre est une tâche de programmation courante. Il existe plusieurs approches pour résoudre ce problème, chacune avec des caractéristiques de performances variables.

L'extrait Python fourni utilisant sum(int(digit) for digit in str(number)) convertit le nombre en chaîne et parcourt son individu. chiffres. Une solution alternative utilisant sum(map(int, str(number))) obtient le même résultat en mappant chaque chiffre sur un entier, puis en les additionnant.

Bien que ces approches soient simples, une implémentation plus efficace peut être obtenu en opérant entièrement sur des nombres entiers. L'extrait de code suivant utilise la boucle while pour parcourir chaque chiffre :

def sum_digits(n):
    s = 0
    while n:
        s += n % 10
        n //= 10
    return s

Une autre variante utilisant divmod divise le nombre en son quotient et son reste :

def sum_digits2(n):
    s = 0
    while n:
        n, remainder = divmod(n, 10)
        s += remainder
    return s

Les mesures de performances montrent que ces les solutions basées sur des entiers sont nettement plus rapides que les alternatives basées sur des chaînes :

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

Par conséquent, pour une vitesse optimale, il il est recommandé d'utiliser l'une des approches basées sur les nombres entiers présentées dans cette discussion.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn