Tutorials  /  Python

Python sum()

Ccentron Redaktion · Februar 2024 ·4 Min. Lesezeit ·Python, Tutorial

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

VM

Zum Ausprobieren: Cloud-Server ab 3,12 €/Monat

ccloud³ VMs aus deutschen Rechenzentren – in Sekunden gestartet, stundengenau abgerechnet, mit 200 € Startguthaben für neue Konten. Server starten →

Die Syntax der Python sum() Funktion lautet:

Code
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

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

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

Output:

Code
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.

Python
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:

Code
3
13
274
289

Python sum() - Python Summe von Fließkommazahlen

Python
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.

Python
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:

Code
(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.

Console
# 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.

Python
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.

Python
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.

Code
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.

Python
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.

%3Cscript%20type%3D%22application%2Fld%2Bjson%22%3E%0D%0A%7B%0D%0A%20%20%22%40context%22%3A%20%22https%3A%2F%2Fschema.org%22%2C%0D%0A%20%20%22%40graph%22%3A%20%5B%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%22%40id%22%3A%20%22%23article%22%2C%0D%0A%20%20%20%20%20%20%22%40type%22%3A%20%22Article%22%2C%0D%0A%20%20%20%20%20%20%22headline%22%3A%20%22Python%20sum%28%29%20Funktion%22%2C%0D%0A%20%20%20%20%20%20%22name%22%3A%20%22Python%20sum%28%29%20Funktion%22%2C%0D%0A%20%20%20%20%20%20%22description%22%3A%20%22Dieser%20Beitrag%20erkl%C3%A4rt%20die%20Python%20sum%28%29%20Funktion%2C%20ihre%20Syntax%2C%20die%20Verwendung%20mit%20Listen%2C%20Tupeln%2C%20Bytes%2C%20Flie%C3%9Fkommazahlen%20und%20komplexen%20Zahlen%20sowie%20wichtige%20Hinweise%20zu%20Performance%2C%20Speicherverbrauch%2C%20Generatoren%2C%20Genauigkeit%20und%20Einschr%C3%A4nkungen.%22%2C%0D%0A%20%20%20%20%20%20%22inLanguage%22%3A%20%22de-DE%22%2C%0D%0A%20%20%20%20%20%20%22about%22%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%22Python%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20sum%28%29%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20Funktionen%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Iterables%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Listen%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Tupel%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Bytes%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Bytearray%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Ganzzahlen%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Flie%C3%9Fkommazahlen%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Komplexe%20Zahlen%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Generatoren%22%2C%0D%0A%20%20%20%20%20%20%20%20%22range%28%29%22%2C%0D%0A%20%20%20%20%20%20%20%20%22math.fsum%28%29%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Performance%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Speicherverbrauch%22%2C%0D%0A%20%20%20%20%20%20%20%20%22TypeError%22%0D%0A%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%22keywords%22%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%22Python%20sum%20Funktion%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20sum%28%29%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20Summe%20berechnen%22%2C%0D%0A%20%20%20%20%20%20%20%20%22sum%20iterable%20start%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20Liste%20summieren%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20Tuple%20summieren%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20Bytes%20summieren%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20Flie%C3%9Fkommazahlen%20summieren%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20komplexe%20Zahlen%20summieren%22%2C%0D%0A%20%20%20%20%20%20%20%20%22math.fsum%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20Generator%20sum%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20range%20sum%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20TypeError%20sum%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20Performance%20sum%22%2C%0D%0A%20%20%20%20%20%20%20%20%22Python%20Speicherverbrauch%22%0D%0A%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%22articleSection%22%3A%20%22Python%22%2C%0D%0A%20%20%20%20%20%20%22publisher%22%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22Organization%22%2C%0D%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22centron%22%2C%0D%0A%20%20%20%20%20%20%20%20%22url%22%3A%20%22https%3A%2F%2Fwww.centron.de%2F%22%0D%0A%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%22mainEntityOfPage%22%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22WebPage%22%2C%0D%0A%20%20%20%20%20%20%20%20%22%40id%22%3A%20%22https%3A%2F%2Fwww.centron.de%2F%22%0D%0A%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%22mentions%22%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22sum%28%29%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Eine%20eingebaute%20Python-Funktion%2C%20mit%20der%20die%20Summe%20der%20Zahlen%20eines%20Iterierbaren%20berechnet%20wird.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22iterable%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Ein%20Objekt%20in%20Python%2C%20%C3%BCber%20dessen%20Elemente%20iteriert%20werden%20kann%2C%20zum%20Beispiel%20eine%20Liste%2C%20ein%20Tupel%2C%20ein%20Bytearray%2C%20ein%20range-Objekt%20oder%20ein%20Generator.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22start%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Ein%20optionaler%20Startwert%20der%20Python%20sum%28%29%20Funktion%2C%20der%20zur%20Summe%20der%20Elemente%20des%20Iterierbaren%20addiert%20wird.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Liste%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Ein%20Python-Datentyp%2C%20der%20mehrere%20Werte%20in%20einer%20geordneten%2C%20ver%C3%A4nderbaren%20Sequenz%20speichert%20und%20mit%20sum%28%29%20summiert%20werden%20kann%2C%20sofern%20die%20Elemente%20addierbar%20sind.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Tupel%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Eine%20geordnete%2C%20unver%C3%A4nderliche%20Python-Sequenz%2C%20deren%20numerische%20Elemente%20mit%20sum%28%29%20addiert%20werden%20k%C3%B6nnen.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22bytes%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Ein%20Python-Datentyp%20f%C3%BCr%20unver%C3%A4nderliche%20Byte-Sequenzen%2C%20deren%20numerische%20Werte%20mit%20sum%28%29%20summiert%20werden%20k%C3%B6nnen.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22bytearray%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Ein%20ver%C3%A4nderlicher%20Python-Datentyp%20f%C3%BCr%20Byte-Sequenzen%2C%20der%20ebenfalls%20als%20Iterable%20an%20sum%28%29%20%C3%BCbergeben%20werden%20kann.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Flie%C3%9Fkommazahlen%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Zahlen%20mit%20Dezimalanteil%2C%20die%20mit%20sum%28%29%20addiert%20werden%20k%C3%B6nnen%2C%20bei%20denen%20jedoch%20Pr%C3%A4zisionsfehler%20auftreten%20k%C3%B6nnen.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Komplexe%20Zahlen%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Zahlen%20mit%20Real-%20und%20Imagin%C3%A4rteil%2C%20die%20in%20Python%20mit%20sum%28%29%20addiert%20werden%20k%C3%B6nnen.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22math.fsum%28%29%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Eine%20Python-Funktion%20aus%20dem%20math-Modul%2C%20die%20f%C3%BCr%20die%20pr%C3%A4zisere%20Addition%20von%20Flie%C3%9Fkommazahlen%20verwendet%20werden%20kann.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22range%28%29%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Eine%20Python-Funktion%2C%20die%20Zahlenbereiche%20speichereffizient%20erzeugt%20und%20sich%20gut%20mit%20sum%28%29%20f%C3%BCr%20gro%C3%9Fe%20Datenmengen%20kombinieren%20l%C3%A4sst.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22Generator%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Ein%20Python-Objekt%2C%20das%20Werte%20bei%20Bedarf%20erzeugt%20und%20dadurch%20bei%20gro%C3%9Fen%20Datenmengen%20speichereffizient%20mit%20sum%28%29%20verwendet%20werden%20kann.%22%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%22%40type%22%3A%20%22DefinedTerm%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22TypeError%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22description%22%3A%20%22Eine%20Python-Ausnahme%2C%20die%20unter%20anderem%20auftreten%20kann%2C%20wenn%20nicht%20addierbare%20oder%20inkompatible%20Datentypen%20mit%20sum%28%29%20verarbeitet%20werden.%22%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%5D%0D%0A%20%20%20%20%7D%0D%0A%20%20%5D%0D%0A%7D%0D%0A%3C%2Fscript%3E

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Python
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren