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.
Cuprins
Î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.
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.
Î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ă.
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.