Forståelse af Pythons sumfunktion [With Examples]

Lær alt om sum()-funktionen i Python: fra syntaksen til at bruge den med forskellige iterables – med nyttige kodeeksempler.

Når du arbejder med Python iterables, såsom en liste over tal, er en almindelig operation at finde summen af ​​alle elementer på listen. Vi vil også støde på sådanne operationer, når vi arbejder med andre iterables, såsom tupler og sæt.

Dette kan gøres på et par forskellige måder, men den anbefalede Pythonic-måde er at bruge den indbyggede sum()-funktion.

Her vil vi starte med at se på de andre tilgange, såsom looping og definering af en funktion. Vi vil derefter fortsætte med at lære syntaksen for Pythons sum()-funktion og kodeeksempler for at forstå det bedre.

Opsummering af værdier i en Python Iterable

📋 Du kan kode med i en Python REPL. Eller du kan bruge toadmin.dk’s Online Python-editor.

Overvej følgende liste over tal:

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

Vores mål er at finde summen af ​​alle tal på listen. Vi kommer snart til Python sum()-funktionen, men vi starter med nogle af de andre tilgange, vi kan tage. Disse omfatter:

  • Brug af en simpel for loop
  • Brug af reduce()-funktionen fra functools-modulet
  • Definering af en brugerdefineret funktion

Brug af loops

For at finde summen af ​​alle elementer i en liste, kan vi bruge en for-løkke som sådan:

  • Initialiser den samlede variabel til nul.
  • Gå gennem tallisten og få adgang til hvert tal.
  • Tilføj tallet til totalen.
>>> nums = [2,8,5,3,11,7,9]
>>> total = 0
>>> for num in nums:
...     total += num
...
>>> total
45

Brug af Reducer-funktionen

En anden tilgang til at summere iterables er at bruge reduce()-funktionen. Reduceringsfunktionen, der er indbygget i Pythons functools-modul, optager en funktion og en iterable. Og reducerer det iterable ved successivt at anvende funktionen på elementerne i det iterable.

  Sådan opretter du Amazon Prime Video-brugerprofiler

Her bruger vi en lambda-funktion til at definere tilføjelsen af ​​to tal og pass in nums-listen som den iterable.

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

Funktionen reduce() fungerer ved successivt at tilføje to tal – fra venstre mod højre – indtil den reduceres til en enkelt sumværdi:

Brug af en brugerdefineret funktion

Vi kan også definere en brugerdefineret funktion til at gøre dette. Her definerer vi en funktion sum_list, der:

  • Indtager en liste med tal som argument og
  • Returnerer summen af ​​elementer i en liste.

Funktionens krop bruger den looping-konstruktion, vi så på tidligere. Men at definere en funktion giver os genanvendelighed.

>>> def sum_list(some_list):
...     total = 0
...     for num in some_list:
...        total += num
...     return total
...

Kaldning af sum_list()-funktionen med nums som argumenter returnerer summen af ​​45:

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

Lad os derefter lære om den indbyggede sum()-funktion. Det er ikke kun kortfattet, men også robust, fordi det fungerer godt med flere iterables og datatyper.

Syntaks for Python Sum-funktionen

Syntaksen for at bruge sum()-funktionen er som følger:

sum(iterable, start)

Her,

  • iterable er et påkrævet argument. Det kan være enhver iterabel, for hvilken summeringsoperationen er gyldig, såsom en liste eller tupler af tal. Kaldning af sum()-funktionen med Python-strenge rejser en TypeError-undtagelse (mere om dette senere).
  • start er et valgfrit argument. Det er ofte en numerisk værdi, der lægges til den beregnede sum. Dette kan være nyttigt, når du skal tilføje en konstant værdi til resultatet.

Nu hvor vi har lært syntaksen for Python sum()-funktionen, lad os bruge den til at summere iterables.

  8 bedste vektordatabaser til at frigøre AIs sande potentiale

Summering af iterables med sumfunktion

#1. Liste

Lad os finde summen af ​​tal i nums-listen ved hjælp af sum()-funktionen:

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

Brug af den valgfri startværdi

For at tilføje en konstant værdi til summen kan vi bruge sum()-funktionen med den valgfri startværdi. Her sender vi en startværdi på 100 ind som et positionelt argument:

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

Startværdien kan også angives som et nøgleordsargument:

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

#2. Tuple

Sum()-funktionen fungerer også med tupler. Vi opretter en tuple nums_tuple ved at caste nums listen til en tuple:

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

#3. Sæt

Vi kan også bruge sum()-funktionen med et sæt tal:

>>> nums_set = set(nums)
>>> nums_set
{2, 3, 5, 7, 8, 9, 11}

Her kaster vi nums-listen til et Python-sæt og beregner summen af ​​elementer i nums_set.

>>> sum_3 = sum(nums_set)
>>> sum_3
45

#4. Ordbog

Overvej følgende student_dict med numeriske taster. Læg mærke til, hvad der sker, når du kalder sum()-funktionen med denne ordbog som argument.

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

Sum()-funktionen returnerer som standard summen af ​​nøglerne.

Opsummering af nøglerne

Vi ved, at standardadfærden er at summere nøglerne til ordbogen.

Du kan dog gøre dette mere eksplicit ved at bruge ordbogsmetodetasterne() for at få adgang til nøglerne. Og send derefter listen over nøgler til sum()-funktionen:

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

Opsummering af værdierne

Hvis du i stedet vil summere værdierne af ordbogen, skal du få adgang til værdierne ved at kalde metoden values() på ordbogsobjektet:

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

Brug af Pythons sumfunktion med andre numeriske datatyper

Indtil videre har vi set, hvordan man bruger sum()-funktionen med iterables af heltal. Lad os nu se på et par eksempler med andre numeriske datatyper.

Komplekse tal

Sum()-funktionen kan også bruges til at summere komplekse tal. I dette eksempel er nums_c en liste over komplekse tal:

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

Flydende komma-tal

Her bruger vi sum()-funktionen til at summere listen over flydende kommatal nums_f:

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

📑 For forbedret præcision i resultatet af tilføjelse af flydende decimaltal kan du bruge funktionen fsum() fra matematikmodulet til at summere iterables med flydende kommaværdier.

  Ny trend inden for cloud computing [+4 Providers]

Udfladning med Sum-funktionen

Lad os nu se, hvordan sum()-funktionen kan bruges til at udjævne og sammenkæde iterables.

Flad en liste

Antag, at vi har en indlejret liste:

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

Når vi kalder sum()-funktionen ved at indsætte denne indlejrede liste som argumentet sammen med en tom liste som startværdi:

>>> sum(lists,[])
[2, 4, 6, 3, 5, 7]

Vi ser, at den indlejrede liste nu er blevet fladt ud til en enkelt liste med tal.

Tilsvarende, når vi tænker på listen til at have formen l3 = [l1,l2]funktionen sum() sammenkæder de to lister l1 og l2 indlejret i listen l3.

📝Som en hurtig øvelse kan du prøve at bruge sum()-funktionen på andre indlejrede iterables.

Almindelig faldgrube: Brug ikke Pythons sum()-funktion med strenge

Fordi vi har set, at sum()-funktionen kan bruges til at flade og sammenkæde lister (og andre iterables som tuples); det er fristende at tro, at vi også kan bruge det til at sammenkæde strenge.

Men hvis du prøver at gøre det, vil du løbe ind i en TypeError:

>>> sum(['a','b','c'],'')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sum() can't sum strings [use ''.join(seq) instead]

Så funktionen sum() kan ikke bruges til at summere (eller sammenkæde) strenge.

Men som det ses i fejlmeddelelsen ovenfor, kan du bruge join()-metoden til at sammenkæde en liste af strenge i en enkelt streng.

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

Konklusion

I denne tutorial lærte vi, hvordan man bruger den indbyggede sum()-funktion til at finde summen af ​​alle elementer i en iterabel. Den generelle syntaks for at bruge sum()-funktionen er: sum(iterable, start), hvor iterable er et påkrævet argument og start er et valgfrit argument.

Vi kodede derefter flere eksempler for at forstå brugen af ​​sum()-funktionen med iterables som lister, tupler, sæt og ordbøger. Senere så vi på, hvordan sum()-funktionen kan bruges til at fladde og sammenkæde iterables – med undtagelse af Python-strenge.

Jeg håber, du fandt denne tutorial nyttig. Dernæst vil du måske tjekke denne tutorial om Pythons kortfunktion.