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:
sum(iterable[, start])
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:
6
16
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:
3
13
274
289
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:
(4+6j)
(6+8j)
(4.5+0j)
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
.