Summierung von Zahlenziffern optimieren
Das Ermitteln der Summe einzelner Ziffern innerhalb einer Zahl ist eine häufige Programmieraufgabe. Es gibt mehrere Ansätze zur Lösung dieses Problems mit jeweils unterschiedlichen Leistungsmerkmalen.
Das bereitgestellte Python-Snippet mit sum(int(digit) for digit in str(number)) wandelt die Zahl in eine Zeichenfolge um und iteriert über ihre einzelnen Ziffern. Eine alternative Lösung mit sum(map(int, str(number))) erzielt das gleiche Ergebnis, indem jede Ziffer einer Ganzzahl zugeordnet und dann summiert wird.
Während diese Ansätze unkompliziert sind, kann eine effizientere Implementierung möglich sein erreicht, indem vollständig mit ganzen Zahlen operiert wird. Das folgende Codefragment verwendet die while-Schleife, um jede Ziffer zu durchlaufen:
def sum_digits(n): s = 0 while n: s += n % 10 n //= 10 return s
Eine andere Variante mit divmod teilt die Zahl in ihren Quotienten und den Rest auf:
def sum_digits2(n): s = 0 while n: n, remainder = divmod(n, 10) s += remainder return s
Leistungsmessungen zeigen, dass diese Ganzzahlbasierte Lösungen sind deutlich schneller als die stringbasierten Alternativen:
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 |
Daher ist es für eine optimale Geschwindigkeit so Es wird empfohlen, einen der in dieser Diskussion vorgestellten ganzzahlbasierten Ansätze zu verwenden.
Das obige ist der detaillierte Inhalt vonWas ist der schnellste Weg, die Ziffern einer Zahl in Python zu summieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!