Lernen Sie alles über die Funktion sum() in Python: von der Syntax bis zur Verwendung mit verschiedenen Iterablen – mit hilfreichen Codebeispielen.

Bei der Arbeit mit Python-Iterablen, wie z.B. einer Liste von Zahlen, besteht eine häufige Operation darin, die Summe aller Elemente in der Liste zu ermitteln. Auch bei der Arbeit mit anderen Iterablen wie Tupeln und Mengen werden wir auf solche Operationen stoßen.

Dies kann auf verschiedene Arten geschehen, aber die empfohlene Pythonische Methode ist die Verwendung der eingebauten Funktion sum().

Hier werden wir uns zunächst die anderen Ansätze wie Schleifen und die Definition einer Funktion ansehen. Anschließend lernen wir die Syntax der Python-Funktion sum() und Codebeispiele kennen, um sie besser zu verstehen.

Summieren von Werten in einer Python Iterable

Summing-Values-in-a-Python-Iterable

📋 Sie können in einer Python REPL mitcodieren. Oder Sie können den Online-Python-Editor von Geekflare verwenden.

Betrachten Sie die folgende Liste von Zahlen:

>>> nums = [2,8,5,3,11,7,9]

Unser Ziel ist es, die Summe aller Zahlen in der Liste zu finden. Wir werden uns bald mit der Python-Funktion sum() befassen, aber beginnen wir mit einigen der anderen Ansätze, die wir wählen können. Dazu gehören:

  • Verwendung einer einfachen for-Schleife
  • Verwendung der Funktion reduce() aus dem Modul functools
  • Definieren einer eigenen Funktion

Schleifen verwenden

Um die Summe aller Elemente in einer Liste zu ermitteln, können wir eine for-Schleife wie folgt verwenden:

  • Initialisieren Sie die Variable total auf Null.
  • Führen Sie eine Schleife durch die Liste nums und rufen Sie jede Zahl auf.
  • Addieren Sie die Zahl zur Gesamtsumme.
>>> nums = [2,8,5,3,11,7,9]
>>> gesamt = 0
>>> for num in nums:
... gesamt = num
...
>>> gesamt
45

Verwendung der Funktion reduce

Ein anderer Ansatz zum Summieren von Iterablen ist die Verwendung der Funktionreduce(). Die Funktion reduce, die in Pythons Modul functools integriert ist, nimmt eine Funktion und eine Iterable auf. Sie reduziert die Iterable, indem sie die Funktion nacheinander auf die Elemente der Iterable anwendet.

Hier verwenden wir eine Lambda-Funktion, um die Addition von zwei Zahlen zu definieren und übergeben die Liste nums als Iterable.

>>> nums = [2,8,5,3,11,7,9]
>>> from functools import reduce
>>> total = reduce(lambda n1, n2: n1 n2, nums)
>>> Summe
45

Die Funktion reduce() addiert sukzessive zwei Zahlen – von links nach rechts – bis sie auf einen einzigen Summenwert reduziert wird:

Using-the-Reduce-Function

Verwendung einer benutzerdefinierten Funktion

Wir können auch eine benutzerdefinierte Funktion definieren, um dies zu tun. Hier definieren wir eine Funktion sum_list, die:

  • Eine Liste von Zahlen als Argument annimmt und
  • Die Summe der Elemente in einer Liste zurückgibt.

Der Hauptteil der Funktion verwendet das Schleifen-Konstrukt, das wir uns bereits angeschaut haben. Aber die Definition einer Funktion bietet uns Wiederverwendbarkeit.

>>> def sum_list(einige_liste):
... summe = 0
... for num in some_list:
... gesamt = num
... return gesamt
...

Der Aufruf der Funktion sum_list() mit nums als Argumente gibt die Summe von 45 zurück:

>>> nums = [2,8,5,3,11,7,9]
>>> gesamt = sum_list(nums)
>>> Summe
45

Als nächstes lernen wir die integrierte Funktion sum() kennen. Sie ist nicht nur prägnant, sondern auch robust, da sie mit verschiedenen Iterablen und Datentypen gut funktioniert.

Syntax der Python-Summenfunktion

Die Syntax zur Verwendung der Funktion sum() lautet wie folgt:

sum(iterable, start)

Hier,

  • iterable ist ein erforderliches Argument. Es kann jede beliebige Iterable sein, für die die Summierungsoperation gültig ist, wie z.B. eine Liste oder Tupel von Zahlen. Der Aufruf der Funktion sum() mit Python-Strings führt zu einer TypeError-Ausnahme (mehr dazu später).
  • start ist ein optionales Argument. Es ist oft ein numerischer Wert, der zur berechneten Summe addiert wird. Dies kann hilfreich sein, wenn Sie einen konstanten Wert zum Ergebnis hinzufügen müssen.

Nachdem wir nun die Syntax der Python-Funktion sum() kennengelernt haben, wollen wir sie zum Summieren von Iterablen verwenden.

Summieren von Iterablen mit der Summenfunktion

Summing-Iterables-with-Pythons-Sum-Function

#1. Liste

Lassen Sie uns die Summe der Zahlen in der Liste nums mit der Funktion sum() ermitteln:

>>> nums = [2,8,5,3,11,7,9]
>>> sum_1 = sum(nums)
>>> Summe_1
45

Den optionalen Startwert verwenden

Um einen konstanten Wert zur Summe hinzuzufügen, können wir die Funktion sum() mit dem optionalen Startwert verwenden. Hier geben wir einen Startwert von 100 als Positionsargument ein:

>>> sum_start = sum(nums,100)
>>> sum_start
145

Der Startwert kann auch als Schlüsselwortargument angegeben werden:

>>> sum_start = sum(zahlen,start=10)
>>> sum_start
55

#2. Tupel

Die Funktion sum() funktioniert auch mit Tupeln. Wir erstellen ein Tupel nums_tuple, indem wir die Liste nums in ein Tupel umwandeln:

>>> nums_tuple = tuple(nums)
>>> nums_tuple
(2, 8, 5, 3, 11, 7, 9)
>>> Summe_2 = Summe(Summe_Tupel)
>>> sum_2
45

#3. Setzen Sie

Wir können die Funktion sum() auch mit einer Menge von Zahlen verwenden:

>>> sum_set = set(summen)
>>> summen_menge
{2, 3, 5, 7, 8, 9, 11}

Hier wandeln wir die Liste nums in eine Python-Menge um und berechnen die Summe der Elemente in nums_set.

>>> sum_3 = sum(zahlen_menge)
>>> sum_3
45

#4. Wörterbuch

Betrachten Sie das folgende student_dict mit numerischen Schlüsseln. Beachten Sie, was passiert, wenn Sie die Funktion sum() mit diesem Wörterbuch als Argument aufrufen.

>>> students_dict = {1:106,2:112,3:127}
>>> sum_4 = sum(students_dict)
>>> sum_4
6

Die Funktion sum() gibt standardmäßig die Summe der Schlüssel zurück.

Summieren der Schlüssel

Wir wissen, dass das Standardverhalten darin besteht, die Schlüssel des Wörterbuchs zu summieren.

Sie können dies jedoch explizit machen, indem Sie die Wörterbuchmethode keys() verwenden, um auf die Schlüssel zuzugreifen. Und dann übergeben Sie die Liste der Schlüssel an die Funktion sum():

>>> sum_keys = sum(students_dict.keys())
>>> sum_keys
6

Summieren der Werte

Wenn Sie stattdessen die Werte des Wörterbuchs summieren möchten, greifen Sie auf die Werte zu, indem Sie die Methode values() für das Wörterbuchobjekt aufrufen:

>>> sum_vals = sum(students_dict.values())
>>> sum_vals
345

Verwendung der Summenfunktion von Python mit anderen numerischen Datentypen

Using-Pythons-Sum-Function-with-Other-Numeric-Data-Types

Bis jetzt haben wir gesehen, wie Sie die Funktion sum() mit Iterablen von Ganzzahlen verwenden können. Sehen wir uns nun ein paar Beispiele mit anderen numerischen Datentypen an.

Komplexe Zahlen

Die Funktion sum() kann auch zum Summieren komplexer Zahlen verwendet werden. In diesem Beispiel ist nums_c eine Liste mit komplexen Zahlen:

>>> nums_c = [3 4j, 1 2j]
>>> sum_c = sum(zaehl_c)
>>> sum_c
(4 6j)

Fließkommazahlen

Hier verwenden wir die Funktion sum(), um die Liste der Fließkommazahlen nums_f zu summieren:

>>> nums_f = [1.8,2.5,3.6,7.2]
>>> sum_f = sum(ziffern_f)
>>> sum_f
15.100000000000001

📑 Um die Genauigkeit des Ergebnisses der Addition von Fließkommazahlen zu verbessern, können Sie die Funktion fsum() aus dem Mathematikmodul verwenden, um Iterablen mit Fließkommazahlen zu summieren.

Verflachen mit der Summenfunktion

Sehen wir uns nun an, wie die Funktion sum() zum Verflachen und Verketten von Iterablen verwendet werden kann.

Verflachen einer Liste

Nehmen wir an, wir haben eine verschachtelte Liste:

>>> Listen = [[2,4,6],[3,5,7]]

Wenn wir die Funktion sum() aufrufen, indem wir diese verschachtelte Liste als Argument zusammen mit einer leeren Liste als Startwert übergeben:

>>> Summe(Listen,[])
[2, 4, 6, 3, 5, 7]

Wir sehen, dass die verschachtelte Liste nun zu einer einzigen Liste von Zahlen verflacht ist.

Wenn wir uns die Liste in der Form l3 = [l1,l2] vorstellen, verkettet die Funktion sum() die beiden in der Liste l3 verschachtelten Listen l1 und l2.

versuchen Sie als kurze Übung, die Funktion sum() auf andere verschachtelte Iterables anzuwenden.

Häufiger Fallstrick: Verwenden Sie die sum()-Funktion von Python nicht mit Strings

Da wir gesehen haben, dass die Funktion sum() zum Verflachen und Verketten von Listen (und anderen Iterablen wie Tupeln) verwendet werden kann, ist es verlockend zu denken, dass wir sie auch zum Verketten von Zeichenketten verwenden können.

Aber wenn Sie das versuchen, stoßen Sie auf einen TypeError:

>>> sum(['a','b','c'],'')
Traceback (letzter Aufruf):
  Datei "<stdin>", Zeile 1, in <module&gt
TypeError: sum() kann keine Strings summieren [verwenden Sie stattdessen ''.join(seq)]

Die Funktion sum() kann also nicht zum Summieren (oder Verketten) von Zeichenketten verwendet werden.

Wie Sie jedoch in der obigen Fehlermeldung sehen, können Sie die Methode join() verwenden, um eine Liste von Zeichenketten zu einer einzigen Zeichenkette zu verketten.

>>> ''.join(['a','b','c'])
'abc'

Fazit

In diesem Tutorial haben wir gelernt, wie Sie die eingebaute Funktion sum() verwenden, um die Summe aller Elemente in einer Iterable zu ermitteln. Die allgemeine Syntax zur Verwendung der Funktion sum() lautet: sum(iterable, start), wobei iterable ein erforderliches Argument und start ein optionales Argument ist.

Anschließend haben wir mehrere Beispiele programmiert, um die Verwendung der Funktion sum() mit Iterablen wie Listen, Tupeln, Mengen und Wörterbüchern zu verstehen. Später haben wir uns angeschaut, wie die Funktion sum() für die Verflachung und Verkettung von Iterablen verwendet werden kann – mit Ausnahme von Python-Strings.

Ich hoffe, Sie haben dieses Tutorial hilfreich gefunden. Als Nächstes sollten Sie sich dieses Tutorial über die map-Funktion von Python ansehen.