Разумевање Питхон-ове функције сума [With Examples]

Научите све о функцији сум() у Питхон-у: од синтаксе до употребе са различитим итерабле-има—са корисним примерима кода.

Када радите са Питхон итераблес, као што је листа бројева, уобичајена операција је проналажење збира свих елемената на листи. Наићи ћемо на такве операције када радимо са другим итераблеима, као што су тупле и скупови.

Ово се може урадити на неколико различитих начина, али препоручени Питхониц начин је коришћење уграђене функције сум().

Овде ћемо почети са разматрањем других приступа, као што су петља и дефинисање функције. Затим ћемо наставити да учимо синтаксу Питхон-ове функције сум() и примере кода да бисмо је боље разумели.

Сумирање вредности у Питхон итерабле

📋 Можете кодирати заједно у Питхон РЕПЛ-у. Или можете користити вдзвдз-ов Онлине Питхон едитор.

Размотрите следећу листу бројева:

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

Наш циљ је да пронађемо збир свих бројева на листи. Ускоро ћемо доћи до функције Питхон сум(), али ћемо почети са неким другим приступима које можемо да применимо. Ови укључују:

  • Коришћење једноставне фор петље
  • Коришћење функције редуцира () из модула фунцтоолс
  • Дефинисање прилагођене функције

Коришћење петљи

Да бисмо пронашли збир свих елемената на листи, можемо користити фор петљу овако:

  • Иницијализујте укупну променљиву на нулу.
  • Прођите кроз листу бројева и приступите сваком броју.
  • Додајте број укупном.
>>> nums = [2,8,5,3,11,7,9]
>>> total = 0
>>> for num in nums:
...     total += num
...
>>> total
45

Коришћење функције Редуце

Други приступ сабирању итерабле је коришћење функције редуцира (). Функција редуцирања, уграђена у Питхон-ов модул фунцтоолс, преузима функцију и итерабле. И смањује итерабле сукцесивном применом функције на елементе итерабле.

  Како додати средства у Аппле ИД новчаник

Овде користимо ламбда функцију да дефинишемо сабирање два броја и проследимо листу бројева као итерабле.

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

Функција редуцира () функционише тако што узастопно додаје два броја – с лева на десно – све док се не смањи на једну вредност суме:

Коришћење прилагођене функције

Такође можемо дефинисати прилагођену функцију за ово. Овде дефинишемо функцију сум_лист која:

  • Узима листу бројева као аргумент и
  • Враћа збир елемената на листи.

Тело функције користи конструкцију петље коју смо раније погледали. Али дефинисање функције нам даје могућност поновне употребе.

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

Позивање функције сум_лист() са бројевима као аргументима враћа збир од 45:

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

Затим, хајде да научимо о уграђеној функцији сум(). Није само концизан већ и робустан у томе што добро функционише са неколико итерабле и типова података.

Синтакса функције Питхон Сум

Синтакса за коришћење функције сум() је следећа:

sum(iterable, start)

овде,

  • итерабле је обавезан аргумент. То може бити било који итерабле за који је валидна операција сабирања, као што је листа или скупови бројева. Позивање функције сум() са Питхон стринговима изазива ТипеЕррор изузетак (више о томе касније).
  • старт је опциони аргумент. То је често нумеричка вредност која се додаје израчунатом збиру. Ово може бити од помоћи када је потребно да додате константну вредност резултату.

Сада када смо научили синтаксу функције Питхон сум(), хајде да је користимо за сумирање итерабле.

  Шта значи када ВхатсАпп има једну квачицу?

Сумирање итерабле са функцијом Сум

#1. Листа

Хајде да пронађемо збир бројева на листи бројева користећи функцију сум():

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

Коришћење опционе почетне вредности

Да бисмо додали константну вредност збиру, можемо користити функцију сум() са опционом почетном вредношћу. Овде преносимо почетну вредност од 100 као позициони аргумент:

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

Почетна вредност се такође може навести као аргумент кључне речи:

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

#2. Тупле

Функција сум() такође ради са торкама. Ми креирамо тупле нумс_тупле пребацујући листу нумс у тупле:

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

#3. Комплет

Такође можемо користити функцију сум() са скупом бројева:

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

Овде пребацујемо нумс листу у Питхон скуп и израчунавамо збир елемената у нумс_сет.

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

#4. Речник

Размотрите следећи студент_дицт са нумеричким тастерима. Обратите пажњу шта се дешава када позовете функцију сум() са овим речником као аргументом.

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

Функција сум() подразумевано враћа збир кључева.

Сумминг тхе Кеис

Знамо да је подразумевано понашање сабирање кључева речника.

Међутим, ово можете учинити експлицитнијим коришћењем метода речника кеис() за приступ кључевима. А затим проследите листу кључева функцији сум():

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

Сумирање вредности

Ако уместо тога желите да збројите вредности речника, приступите вредностима позивањем методе валуес() на објекту речника:

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

Коришћење Питхон-ове функције сума са другим нумеричким типовима података

До сада смо видели како да користимо функцију сум() са итераблес целих бројева. Погледајмо сада неколико примера са другим нумеричким типовима података.

Комплексни бројеви

Функција сум() се такође може користити за сабирање комплексних бројева. У овом примеру, нумс_ц је листа комплексних бројева:

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

Бројеви са плутајућим зарезом

Овде користимо функцију сум() да збројимо листу бројева са плутајућим зарезом нумс_ф:

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

📑 За побољшану прецизност у резултату додавања бројева са покретним зарезом, можете користити функцију фсум() из математичког модула да бисте сумирали итерабле са вредностима у покретном зарезу.

  13 најбољих вишенаменских тема за креирање јединствене ВордПресс веб странице

Изједначавање са функцијом збира

Сада да видимо како се функција сум() може користити за изравнавање и спајање итерабле.

Изравнајте листу

Претпоставимо да имамо угнежђену листу:

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

Када позовемо функцију сум() тако што проследимо ову угнежђену листу као аргумент заједно са празном листом као почетном вредношћу:

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

Видимо да је угнежђена листа сада спљоштена у једну листу бројева.

Еквивалентно, када мислимо да је листа облика л3 = [l1,l2]функција сум() спаја две листе л1 и л2 угнежђене унутар листе л3.

📝Као брзу вежбу, покушајте да користите функцију сум() на другим угнежђеним итераблеима.

Уобичајена замка: Немојте користити Питхон-ову функцију сум() са стринговима

Зато што смо видели да се функција сум() може користити за изравнавање и спајање листа (и других итерабле-а као што су тупле); примамљиво је помислити да га можемо користити и за спајање низова.

Али ако покушате то да урадите, наићи ћете на ТипеЕррор:

>>> 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]

Дакле, функција сум() се не може користити за сабирање (или спајање) стрингова.

Међутим, као што се види у горњој поруци о грешци, можете користити методу јоин() да повежете листу стрингова у један стринг.

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

Закључак

У овом водичу смо научили како да користимо уграђену функцију сум() да пронађемо збир свих елемената у итерабле. Општа синтакса за коришћење функције сум() је: сум(итерабле, старт), где је итерабле обавезан аргумент, а старт је опциони аргумент.

Затим смо кодирали неколико примера да бисмо разумели употребу функције сум() са итераблес као што су листе, тупле, скупови и речници. Касније смо погледали како се функција сум() може користити за изравнавање и спајање итерабле-а — са изузетком Питхон стрингова.

Надам се да вам је овај водич био користан. Следеће, можда ћете желети да погледате овај водич о Питхоновој функцији мапе.