Python sum() Funktion

Die Python sum() Funktion wird verwendet, um die Summe der Zahlen eines Iterierbaren zu erhalten.

Die Syntax der Python sum() Funktion lautet:

start ist eine optionale Zahl mit dem Standardwert 0. Wird start angegeben, wird die Summe von start und allen Zahlen im Iterierbaren zurückgegeben.

Python sum() Liste von Zahlen

s = sum([1, 2, 3])
print(s)

s = sum([1, 2, 3], 10)
print(s)

Output:

Beachten Sie, dass die sum() Methode keine Schlüsselwortargumente akzeptiert. Wenn wir also sum([1, 2, 3], start=10) schreiben, wird eine Ausnahme geworfen, da TypeError: sum() keine Schlüsselwortargumente annimmt.

Python Summe einer Sequenz von Ganzzahlen

Da sum iterierbare Argumente akzeptiert, können wir auch Tuple, Bytes von Zahlen übergeben.

s = sum(bytes([1, 2]))
print(s)

s = sum(bytearray([1, 2]), 10)
print(s)

# sum of integers in different formats, tuple of numbers
s = sum((1, 0b11, 0o17, 0xFF))
print(s)

s = sum((1, 0b11, 0o17, 0xFF), 0xF)
print(s)

Output:

Python sum() – Python Summe von Fließkommazahlen

s = sum([1.5, 2.5, 3])
print(s)

Output: 7.0 Wenn Sie Fließkommazahlen mit erweiterter Präzision addieren möchten, können Sie die math.fsum() Funktion verwenden.

Python Summe von Komplexen Zahlen

Die sum() Funktion funktioniert auch mit komplexen Zahlen.

s = sum([1 + 2j, 3 + 4j])
print(s)

s = sum([1 + 2j, 3 + 4j], 2 + 2j)
print(s)

s = sum([1 + 2j, 2, 1.5 - 2j])
print(s)

Output:

Leistung und Einschränkungen der sum()-Funktion

Die sum()-Funktion ist für die Performance optimiert und kann große Datensätze effizient verarbeiten. Dennoch kann ihre Leistung je nach Art des verarbeiteten Iterables und der Datenmenge variieren. Hier sind einige Einblicke und praktische Tipps, um die Leistung und die Einschränkungen der sum()-Funktion besser zu verstehen:

Leistungseinblicke

1. Verarbeitung großer Bereiche (Ranges): Die sum()-Funktion ist besonders effizient bei der Verarbeitung von Iterables wie range(), da diese faul (lazy) generiert werden und nicht den gesamten Speicher belegen.

# Beispiel: Summieren eines großen Bereichs
s = sum(range(1_000_000))
print(s) # Ausgabe: 499999500000

Hinweis: Da range() die Zahlen nicht im Speicher speichert, ist dies speichereffizient.

2. Speichernutzung bei Listen: Wenn eine Liste übergeben wird, muss sum() alle Elemente im Speicher halten, was bei sehr großen Datensätzen zu Speicherproblemen führen kann.

große_liste = list(range(1_000_000))
s = sum(große_liste)
print(s) # Ausgabe: 499999500000

Tipp: Wenn möglich, verwenden Sie range() oder Generator-Ausdrücke für eine bessere Speichernutzung.

3. Generatoren für Effizienz: Generatoren berechnen die Werte „on-the-fly“, ohne alle Elemente im Voraus zu laden, was sie ideal für die Verarbeitung sehr großer Datensätze macht.

s = sum(x for x in range(1_000_000) if x % 2 == 0)
print(s) # Ausgabe: 249999500000

Einschränkungen

1. Einheitliche Datentypen erforderlich: Alle Elemente im Iterable müssen addierbar sein (z. B. Zahlen). Wenn gemischte Typen (z. B. Strings und Zahlen) vorhanden sind, führt dies zu einem TypeError.

s = sum([1, '2', 3]) # TypeError: unsupported operand type(s) for +: 'int' and 'str'

2. Genauigkeit bei Fließkommazahlen: Obwohl sum() mit Fließkommazahlen funktioniert, können Präzisionsfehler auftreten, insbesondere bei sehr großen oder sehr kleinen Zahlen. In solchen Fällen ist es besser, math.fsum() für höhere Präzision zu verwenden.

from math import fsum
floats = [1e-16, 1, 1e-16]
print(sum(floats)) # Ausgabe: 1.0 (Verlust an Präzision)
print(fsum(floats)) # Ausgabe: 1.0000000000000002 (bessere Präzision)

Praktische Tipps

  • Verwenden Sie range() oder Generator-Ausdrücke, um den Speicherverbrauch bei der Verarbeitung großer Datensätze zu minimieren.
  • Für Fließkommazahlen empfiehlt sich die Verwendung von math.fsum(), um Präzisionsfehler zu vermeiden.
  • Stellen Sie sicher, dass die Elemente im Iterable kompatible Datentypen für die Addition sind, um Fehler zu verhindern.

Durch das Verständnis dieser Leistungsmerkmale und Einschränkungen können Sie die sum()-Funktion optimal in Ihren Python-Programmen nutzen.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: