Înțelegerea funcției Sum a lui Python [With Examples]

Aflați totul despre funcția sum() în Python: de la sintaxă pentru a o utiliza cu diverse iterabile, cu exemple de cod utile.

Când lucrați cu iterabile Python, cum ar fi o listă de numere, o operație comună este găsirea sumei tuturor elementelor din listă. Ne vom confrunta cu astfel de operațiuni atunci când lucrăm cu alte iterabile, cum ar fi tupluri și seturi.

Acest lucru se poate face în câteva moduri diferite, dar modalitatea Pythonic recomandată este utilizarea funcției încorporate sum().

Aici, vom începe prin a ne uita la celelalte abordări, cum ar fi bucla și definirea unei funcții. Vom continua apoi să învățăm sintaxa funcției Python sum() și exemple de cod pentru a o înțelege mai bine.

Însumarea valorilor într-un iterabil Python

📋 Puteți codifica împreună într-un REPL Python. Sau puteți folosi editorul online Python al tipstrick.ro.

Luați în considerare următoarea listă de numere:

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

Scopul nostru este să găsim suma tuturor numerelor din listă. Vom ajunge la funcția Python sum() în curând, dar vom începe cu câteva dintre celelalte abordări pe care le putem lua. Acestea includ:

  • Folosind o buclă simplă pentru
  • Folosind funcția reduce() din modulul functools
  • Definirea unei funcții personalizate

Folosind bucle

Pentru a găsi suma tuturor elementelor dintr-o listă, putem folosi o buclă for astfel:

  • Inițializați variabila totală la zero.
  • Parcurgeți lista de numere și accesați fiecare număr.
  • Adăugați numărul la total.
>>> nums = [2,8,5,3,11,7,9]
>>> total = 0
>>> for num in nums:
...     total += num
...
>>> total
45

Utilizarea funcției de reducere

O altă abordare a însumării iterabilelor este utilizarea funcției reduce(). Funcția reduce, încorporată în modulul functools al lui Python, preia o funcție și un iterabil. Și reduce iterabilul prin aplicarea succesivă a funcției pe elementele iterabilului.

  Cum se creează un sondaj în Zoom

Aici, folosim o funcție lambda pentru a defini adăugarea a două numere și pentru a trece în lista de numere ca iterabil.

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

Funcția reduce() funcționează prin adăugarea succesivă a două numere – de la stânga la dreapta – până când se reduce la o singură valoare a sumei:

Folosind o funcție personalizată

De asemenea, putem defini o funcție personalizată pentru a face acest lucru. Aici, definim o funcție sum_list care:

  • Preia o listă de numere ca argument și
  • Returnează suma elementelor dintr-o listă.

Corpul funcției folosește construcția buclă la care ne-am uitat mai devreme. Dar definirea unei funcții ne oferă reutilizabilitate.

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

Apelarea funcției sum_list() cu nums ca argumente returnează suma 45:

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

În continuare, să învățăm despre funcția încorporată sum(). Nu este doar concis, ci și robust, prin faptul că funcționează bine cu mai multe iterabile și tipuri de date.

Sintaxa funcției Python Sum

Sintaxa de utilizare a funcției sum() este următoarea:

sum(iterable, start)

Aici,

  • iterabil este un argument necesar. Poate fi orice iterabil pentru care operația de însumare este validă, cum ar fi o listă sau tuple de numere. Apelarea funcției sum() cu șiruri Python ridică o excepție TypeError (mai multe despre aceasta mai târziu).
  • start este un argument opțional. Este adesea o valoare numerică care se adaugă la suma calculată. Acest lucru poate fi util atunci când trebuie să adăugați o valoare constantă rezultatului.

Acum că am învățat sintaxa funcției Python sum() , să o folosim pentru a suma iterabile.

  Cum să deschideți Centrul de control pe iPhone X

Însumarea iterabilelor cu funcția Sum

#1. Listă

Să găsim suma numerelor din lista de numere folosind funcția sum():

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

Folosind valoarea de pornire opțională

Pentru a adăuga o valoare constantă la sumă, putem folosi funcția sum() cu valoarea de pornire opțională. Aici, trecem o valoare de început de 100 ca argument pozițional:

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

Valoarea de pornire poate fi specificată și ca argument al cuvântului cheie:

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

#2. Tuplu

Funcția sum() funcționează și cu tupluri. Creăm un tuplu nums_tuple prin turnarea listei de numere într-un tuplu:

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

#3. A stabilit

De asemenea, putem folosi funcția sum() cu un set de numere:

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

Aici, aruncăm lista nums într-un set Python și calculăm suma elementelor din nums_set.

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

#4. Dicţionar

Luați în considerare următorul student_dict cu taste numerice. Observați ce se întâmplă când apelați funcția sum() cu acest dicționar ca argument.

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

Funcția sum(), în mod implicit, returnează suma cheilor.

Însumând Cheile

Știm că comportamentul implicit este să însumăm cheile dicționarului.

Cu toate acestea, puteți face acest lucru mai explicit folosind metoda dicționarului keys() pentru a accesa cheile. Și apoi treceți lista de chei la funcția sum():

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

Însumarea Valorilor

Dacă doriți să însumați valorile dicționarului, accesați valorile apelând metoda values() de pe obiectul dicționarului:

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

Utilizarea funcției Sum a lui Python cu alte tipuri de date numerice

Până acum, am văzut cum să folosim funcția sum() cu iterabile de numere întregi. Acum să ne uităm la câteva exemple cu alte tipuri de date numerice.

Numere complexe

Funcția sum() poate fi folosită și pentru a însuma numere complexe. În acest exemplu, nums_c este o listă de numere complexe:

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

Numere în virgulă mobilă

Aici, folosim funcția sum() pentru a suma lista de numere în virgulă mobilă nums_f:

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

📑 Pentru o precizie îmbunătățită în rezultatul adăugării numerelor în virgulă mobilă, puteți utiliza funcția fsum() din modulul de matematică pentru a suma iterabile cu valori în virgulă mobilă.

  10 moduri de a remedia Nu se pot viziona fluxuri cu eroarea Kodi

Aplatizare cu funcția Sum

Acum să vedem cum poate fi folosită funcția sum() pentru a aplatiza și a concatena iterabile.

Aplatizați o listă

Să presupunem că avem o listă imbricată:

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

Când apelăm funcția sum() prin trecerea acestei liste imbricate ca argument împreună cu o listă goală ca valoare de pornire:

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

Vedem că lista imbricată s-a aplatizat acum într-o singură listă de numere.

În mod echivalent, când ne gândim că lista este de forma l3 = [l1,l2]funcția sum() concatenează cele două liste l1 și l2 imbricate în lista l3.

📝Ca un exercițiu rapid, încercați să utilizați funcția sum() pe alte iterabile imbricate.

Capcană comună: nu utilizați funcția sum() a lui Python cu șiruri

Pentru că am văzut că funcția sum() poate fi folosită pentru a aplatiza și a concatena liste (și alte iterabile precum tuplurile); este tentant să ne gândim că îl putem folosi și pentru a concatena șiruri.

Dar dacă încercați să faceți acest lucru, veți întâlni o 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]

Deci, funcția sum() nu poate fi folosită pentru a însuma (sau a concatena) șiruri.

Cu toate acestea, așa cum se vede în mesajul de eroare de mai sus, puteți utiliza metoda join() pentru a concatena o listă de șiruri într-un singur șir.

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

Concluzie

În acest tutorial, am învățat cum să folosim funcția încorporată sum() pentru a găsi suma tuturor elementelor dintr-un iterabil. Sintaxa generală pentru a utiliza funcția sum() este: sum(iterable, start), unde iterable este un argument obligatoriu și start este un argument opțional.

Apoi am codificat mai multe exemple pentru a înțelege utilizarea funcției sum() cu iterabile precum liste, tupluri, seturi și dicționare. Mai târziu, ne-am uitat la modul în care funcția sum() poate fi utilizată pentru aplatizarea și concatenarea iterabilelor – cu excepția șirurilor Python.

Sper că ați găsit acest tutorial de ajutor. Apoi, poate doriți să consultați acest tutorial despre funcția de hartă a lui Python.