Forstå Pythons sumfunksjon [With Examples]

Lær alt om sum()-funksjonen i Python: fra syntaksen for å bruke den med forskjellige iterables – med nyttige kodeeksempler.

Når du arbeider med Python iterables, for eksempel en liste med tall, er en vanlig operasjon å finne summen av alle elementene i listen. Vi vil støte på slike operasjoner når vi jobber med andre iterables, for eksempel tupler og sett, også.

Dette kan gjøres på noen forskjellige måter, men den anbefalte Pythonic-måten er å bruke den innebygde sum()-funksjonen.

Her starter vi med å se på de andre tilnærmingene, for eksempel looping og definere en funksjon. Vi vil deretter fortsette å lære syntaksen til Pythons sum()-funksjon og kodeeksempler for å forstå den bedre.

Summering av verdier i en Python Iterable

📋 Du kan kode med i en Python REPL. Eller du kan bruke tipsbilk.net’s Online Python-redigeringsprogram.

Tenk på følgende liste over tall:

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

Målet vårt er å finne summen av alle tallene i listen. Vi kommer snart til Python sum()-funksjonen, men vi starter med noen av de andre tilnærmingene vi kan ta. Disse inkluderer:

  • Bruke en enkel for loop
  • Ved å bruke reduce()-funksjonen fra functools-modulen
  • Definere en egendefinert funksjon

Bruke løkker

For å finne summen av alle elementene i en liste, kan vi bruke en for-løkke slik:

  • Initialiser total variabel til null.
  • Gå gjennom talllisten og få tilgang til hvert tall.
  • Legg til tallet til totalen.
>>> nums = [2,8,5,3,11,7,9]
>>> total = 0
>>> for num in nums:
...     total += num
...
>>> total
45

Bruke Reduser-funksjonen

En annen tilnærming til å summere iterables er å bruke reduce()-funksjonen. Reduseringsfunksjonen, innebygd i Pythons functools-modul, tar inn en funksjon og en iterable. Og reduserer den iterable ved suksessivt å bruke funksjonen på elementene i den iterable.

  Topp 7 PHP-rammer for bedre applikasjonsutvikling

Her bruker vi en lambda-funksjon for å definere addisjonen av to tall og pass in nums list som iterable.

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

Reduser()-funksjonen fungerer ved å legge til to tall suksessivt – fra venstre til høyre – til den reduseres til en enkelt sumverdi:

Bruke en egendefinert funksjon

Vi kan også definere en egendefinert funksjon for å gjøre dette. Her definerer vi en funksjon sum_list som:

  • Tar inn en liste med tall som argument og
  • Returnerer summen av elementer i en liste.

Brødteksten til funksjonen bruker looping-konstruksjonen vi så på tidligere. Men å definere en funksjon gir oss gjenbrukbarhet.

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

Å kalle sum_list()-funksjonen med tall som argumenter returnerer summen av 45:

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

La oss deretter lære om den innebygde sum()-funksjonen. Den er ikke bare kortfattet, men også robust ved at den fungerer godt med flere iterables og datatyper.

Syntaks for Python Sum-funksjonen

Syntaksen for å bruke sum()-funksjonen er som følger:

sum(iterable, start)

Her,

  • iterable er et nødvendig argument. Det kan være en hvilken som helst iterabel som summeringsoperasjonen er gyldig for, for eksempel en liste eller tupler med tall. Å kalle sum()-funksjonen med Python-strenger gir et TypeError-unntak (mer om dette senere).
  • start er et valgfritt argument. Det er ofte en numerisk verdi som legges til den beregnede summen. Dette kan være nyttig når du trenger å legge til en konstant verdi til resultatet.

Nå som vi har lært syntaksen til Python sum()-funksjonen, la oss bruke den til å summere iterables.

  Hvordan endre bakgrunn på teams

Summering av iterables med sumfunksjon

#1. Liste

La oss finne summen av tall i nums-listen ved å bruke sum()-funksjonen:

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

Bruke den valgfrie startverdien

For å legge til en konstant verdi til summen, kan vi bruke funksjonen sum() med den valgfrie startverdien. Her sender vi inn en startverdi på 100 som et posisjonsargument:

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

Startverdien kan også angis som et nøkkelordargument:

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

#2. Tuppel

Sum()-funksjonen fungerer også med tupler. Vi lager en tuppel nums_tuple ved å kaste talllisten til en tuppel:

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

#3. Sett

Vi kan også bruke sum()-funksjonen med et sett med tall:

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

Her kaster vi nums-listen til et Python-sett og beregner summen av elementene i nums_set.

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

#4. Ordbok

Tenk på følgende student_dict med numeriske taster. Legg merke til hva som skjer når du kaller sum()-funksjonen med denne ordboken som argument.

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

Sum()-funksjonen returnerer som standard summen av nøklene.

Oppsummering av nøklene

Vi vet at standardoppførselen er å summere nøklene til ordboken.

Du kan imidlertid gjøre dette mer eksplisitt ved å bruke ordbokmetodetastene() for å få tilgang til nøklene. Og send deretter listen over nøkler til sum()-funksjonen:

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

Oppsummering av verdiene

Hvis du vil summere verdiene til ordboken i stedet, får du tilgang til verdiene ved å kalle verdier()-metoden på ordbokobjektet:

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

Bruke Pythons sumfunksjon med andre numeriske datatyper

Så langt har vi sett hvordan man bruker sum()-funksjonen med iterables av heltall. La oss nå se på et par eksempler med andre numeriske datatyper.

Komplekse tall

Sum()-funksjonen kan også brukes til å summere komplekse tall. I dette eksemplet er nums_c en liste over komplekse tall:

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

Flytende kommatall

Her bruker vi sum()-funksjonen for å summere listen over flyttall tall nums_f:

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

📑 For forbedret presisjon i resultatet av å legge til flyttall, kan du bruke fsum()-funksjonen fra matematikkmodulen for å summere iterable med flyttallverdier.

  Covey reduserer kostnadene i rekruttering og WorkOS for å lette utviklingen

Utflating med Sum-funksjonen

La oss nå se hvordan sum()-funksjonen kan brukes til å flate ut og sammenkoble iterable.

Flat en liste

Anta at vi har en nestet liste:

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

Når vi kaller sum()-funksjonen ved å sende inn denne nestede listen som argumentet sammen med en tom liste som startverdi:

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

Vi ser at den nestede listen nå har flatet ut til en enkelt liste med tall.

Tilsvarende, når vi tenker på at listen har formen l3 = [l1,l2]setter sum()-funksjonen sammen de to listene l1 og l2 nestet i listen l3.

📝Som en rask øvelse, prøv å bruke sum()-funksjonen på andre nestede iterables.

Vanlig fallgruve: Ikke bruk Pythons sum()-funksjon med strenger

Fordi vi har sett at sum()-funksjonen kan brukes til å flate ut og sammenkoble lister (og andre iterable som tuples); det er fristende å tro at vi også kan bruke det til å sette sammen strenger.

Men hvis du prøver å gjøre det, får du 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å sum()-funksjonen kan ikke brukes til å summere (eller sette sammen) strenger.

Som vist i feilmeldingen ovenfor, kan du imidlertid bruke join()-metoden til å sette sammen en liste med strenger til en enkelt streng.

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

Konklusjon

I denne opplæringen lærte vi hvordan du bruker den innebygde sum()-funksjonen for å finne summen av alle elementene i en iterabel. Den generelle syntaksen for å bruke sum()-funksjonen er: sum(iterable, start), der iterable er et nødvendig argument og start er et valgfritt argument.

Vi kodet deretter flere eksempler for å forstå bruken av sum()-funksjonen med iterables som lister, tuples, sett og ordbøker. Senere har vi sett på hvordan sum()-funksjonen kan brukes til å flate ut og sammenkoble iterables – med unntak av Python-strenger.

Jeg håper du fant denne opplæringen nyttig. Deretter vil du kanskje sjekke ut denne opplæringen om Pythons kartfunksjon.