Descoperă totul despre funcția sum() în Python
Acest articol explorează în profunzime funcția sum() din Python, oferind o analiză detaliată a sintaxei sale, a modului de utilizare cu diverse tipuri de date iterabile și exemple practice pentru a facilita înțelegerea. Dacă te afli în situația de a lucra frecvent cu colecții de date, cum ar fi liste de numere, vei aprecia această funcție pentru eficiența și simplitatea ei.
În mod obișnuit, atunci când avem de-a face cu structuri de date iterabile, precum liste, tupluri sau seturi, una dintre operațiile fundamentale este calcularea sumei tuturor elementelor. Python oferă multiple modalități de a realiza acest lucru, însă metoda recomandată și cea mai „pythonică” este utilizarea funcției predefinite sum().
În cele ce urmează, vom analiza diverse abordări pentru a calcula suma elementelor dintr-un iterabil, incluzând utilizarea buclelor și definirea de funcții personalizate. Ulterior, ne vom concentra asupra sintaxei funcției sum() și vom oferi exemple detaliate pentru a demonstra versatilitatea acesteia.
Calcularea sumei valorilor într-un iterabil Python
Pentru a exersa exemplele prezentate, poți utiliza un mediu REPL Python sau editorul online de la tipstrick.ro.
Să considerăm următoarea listă de numere drept punct de plecare:
>>> nums = [2,8,5,3,11,7,9]
Obiectivul nostru este de a determina suma tuturor numerelor din această listă. Înainte de a ne concentra asupra funcției sum(), vom explora câteva metode alternative, cum ar fi:
- Utilizarea unei bucle
for. - Folosirea funcției
reduce()din modululfunctools. - Definirea unei funcții personalizate pentru a calcula suma.
Folosirea buclelor
Pentru a obține suma elementelor unei liste, putem utiliza o buclă for, parcurgând fiecare element și adăugându-l la un total inițializat la zero.
- Se inițializează o variabilă
totalcu valoarea zero. - Se iterează prin lista de numere.
- Se adaugă fiecare număr la variabila
total.
>>> nums = [2,8,5,3,11,7,9] >>> total = 0 >>> for num in nums: ... total += num ... >>> total 45
Utilizarea funcției reduce()
O altă metodă de a însuma elementele unui iterabil este utilizarea funcției reduce(), disponibilă în modulul functools. Această funcție aplică o funcție specificată iterativ asupra elementelor iterabilului, reducându-l la o singură valoare.
În exemplul de mai jos, folosim o funcție lambda pentru a defini adunarea a două numere, aplicând-o asupra listei de numere.
>>> 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() adaugă succesiv două numere din lista, de la stânga la dreapta, până când se obține suma totală.
Definirea unei funcții personalizate
Putem crea și o funcție personalizată pentru a calcula suma elementelor dintr-o listă. În exemplul de mai jos, definim o funcție sum_list care primește ca argument o listă de numere și returnează suma elementelor.
Corpul funcției utilizează o buclă for similară cu cea prezentată anterior, oferind însă un nivel sporit de reutilizabilitate.
>>> def sum_list(some_list): ... total = 0 ... for num in some_list: ... total += num ... return total ...
Apelând funcția sum_list() cu lista nums ca argument, obținem suma 45:
>>> nums = [2,8,5,3,11,7,9] >>> total = sum_list(nums) >>> total 45
În continuare, vom explora funcția predefinită sum(). Aceasta este nu doar concisă, ci și robustă, funcționând eficient cu o varietate de iterabile și tipuri de date.
Sintaxa funcției Python sum()
Sintaxa funcției sum() este următoarea:
sum(iterable, start)
Aici:
iterableeste un argument obligatoriu, care reprezintă un obiect iterabil, cum ar fi o listă sau un tuplu de numere. Apelarea funcțieisum()cu șiruri de caractere va genera o excepțieTypeError.starteste un argument opțional, reprezentând o valoare numerică care se adaugă la suma calculată. Acest argument poate fi util când se dorește adăugarea unei valori constante la rezultat.
Acum că am înțeles sintaxa, vom trece la exemple practice pentru a demonstra utilizarea funcției sum().
Calcularea sumei iterabilelor cu funcția sum()

#1. Listă
Să calculăm suma numerelor dintr-o listă folosind funcția sum():
>>> nums = [2,8,5,3,11,7,9] >>> sum_1 = sum(nums) >>> sum_1 45
Utilizarea valorii de start opționale
Pentru a adăuga o valoare constantă sumei, folosim argumentul opțional start. În exemplul de mai jos, adăugăm valoarea 100:
>>> sum_start = sum(nums,100) >>> sum_start 145
Valoarea de start poate fi specificată și ca argument cuvânt cheie:
>>> sum_start = sum(nums,start=10) >>> sum_start 55
#2. Tuplu
Funcția sum() funcționează și cu tupluri. Vom crea un tuplu nums_tuple prin conversia listei de numere:
>>> nums_tuple = tuple(nums) >>> nums_tuple (2, 8, 5, 3, 11, 7, 9)
>>> sum_2 = sum(nums_tuple) >>> sum_2 45
#3. Set
De asemenea, putem utiliza funcția sum() cu seturi de numere:
>>> nums_set = set(nums)
>>> nums_set
{2, 3, 5, 7, 8, 9, 11}
În acest caz, convertim lista nums într-un set și calculăm suma elementelor acestuia:
>>> sum_3 = sum(nums_set) >>> sum_3 45
#4. Dicționar
Să considerăm următorul dicționar, student_dict, cu chei numerice. Să observăm ce se întâmplă când apelăm funcția sum() cu acest dicționar:
>>> students_dict = {1:106,2:112,3:127}
>>> sum_4 = sum(students_dict)
>>> sum_4
6
În mod implicit, funcția sum() returnează suma cheilor dicționarului.
Însumarea cheilor
Pentru a clarifica faptul că dorim să însumăm cheile dicționarului, putem utiliza metoda keys() pentru a accesa cheile, apoi putem trece lista cheilor către funcția sum():
>>> sum_keys = sum(students_dict.keys()) >>> sum_keys 6
Însumarea valorilor
Pentru a calcula suma valorilor dicționarului, accesăm valorile folosind metoda values():
>>> sum_vals = sum(students_dict.values()) >>> sum_vals 345
Utilizarea funcției sum() cu alte tipuri numerice

Am analizat până acum utilizarea funcției sum() cu iterabile de numere întregi. Acum vom explora exemple cu alte tipuri de date numerice.
Numere complexe
Funcția sum() poate fi utilizată și pentru a însuma numere complexe. În exemplul următor, 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, utilizăm funcția sum() pentru a însuma o listă 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 sporită în rezultatele adunării numerelor în virgulă mobilă, se poate folosi funcția fsum() din modulul math.
Aplatizarea listelor cu funcția sum()
Vom analiza acum cum poate fi utilizată funcția sum() pentru a aplatiza și a concatena iterabile.
Aplatizarea unei liste
Să presupunem că avem o listă imbricată:
>>> lists = [[2,4,6],[3,5,7]]
Apelând funcția sum() cu lista imbricată și o listă goală ca valoare de start, obținem o listă aplatizată:
>>> sum(lists,[]) [2, 4, 6, 3, 5, 7]
În esență, funcția sum() concatenează sublistele într-o singură listă.
Încearcă să aplici funcția sum() pe alte iterabile imbricate pentru a observa rezultatele.
Capcană frecventă: evitarea utilizării funcției sum() cu șiruri de caractere
Deoarece am observat că funcția sum() poate fi folosită pentru a aplatiza și concatena liste, este ușor să considerăm că funcționează și cu șiruri de caractere.
Însă, încercarea de a face acest lucru va genera o eroare 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]
Funcția sum() nu este adecvată pentru a însuma sau concatena șiruri de caractere.
În schimb, se poate folosi metoda join() pentru a concatena o listă de șiruri într-un singur șir:
>>> ''.join(['a','b','c']) 'abc'
Concluzie
În acest articol, am explorat în detaliu utilizarea funcției predefinite sum() pentru a calcula suma elementelor dintr-un iterabil. Sintaxa generală este: sum(iterable, start), unde iterable este un argument obligatoriu, iar start este opțional.
Am analizat exemple de utilizare a funcției cu liste, tupluri, seturi și dicționare. Am observat, de asemenea, că funcția sum() poate fi folosită pentru a aplatiza și concatena iterabile, cu excepția șirurilor de caractere.
Sperăm că acest articol a fost util. Te invităm să explorezi și tutorialul despre funcția map() din Python.