14.2. Функције за рад са торкама и листама¶
Језик Python нам на располагање ставља неколико функција којима можемо одредити често коришћене статистике елемената листе. Погледај следеће функције као и шта оне раде када се нађу у програму.
функција |
опис |
|
израчунава дужину листе |
|
израчунава збир елемената листе |
|
проналази најмањи елемент у листи |
|
проналази највећи елемент у листи |
Ове функције можеш да употребиш како би једноставно решио разне практичне задатке.
Просечна оцена¶
![](../_static/img/question-mark.png)
Дате су оцене из неколико предмета. Израчунај просечну оцену.
Просек, тј. аритметичка средина, једноставно се добија дељењем збира елемената њиховим бројем.
Најмања оцена¶
![](../_static/img/question-mark.png)
Ако се зна да су оцене из природних наука последње три у листи оцена, израчунај Горанову најмању оцену из тих предмета.
У овом задатку комбинује се издвајање сегмента елемената торке и функција за проналажење минимума.
Из листе ocene прво се издвајаја листа ocene_iz_prirodnih_nauka негативним индексирањем од индекса -3 па до краја листе. Тиме су издвојене последње три оцене из листе ocene а то су управо оне из природних наука. У наставку се приказује најмањи елемент листе ocene_iz_prirodnih_nauka.
Претрага¶
Погледајмо на почетку наредни видео:
Проверу да ли елемент припада торки, тј. листи, могуће је извршити
коришћењем оператора in
(на пример, "Бобан Марјановић" in igraci
).
У наредном примеру проверавамо да ли је кошаркаш чије се
име и презиме учитавају при покретању програма играо за репрезентацију
на СП 2019. године.
Проналажење најмање позиције (индекса) на којој се налази неки тражени
елемент може се урадити коришћењем методе index
, којој се као
једини параметар прослеђује елемент који се тражи.
Методе су посебан облик функција које се позивају у облику
struktura.funkcija(parametri)
. Дакле, ако у листи igraci
тражимо Николу Јокића навешћемо igraci.index("Никола Јокић")
. Обрати пажњу -
све наредбе корњачи су заправо биле методе (користили смо
turtle.forward(100)
.
У примеру који следи проналазимо бројеве дресова играча што су заправо индекси њихових позиција у листи igraci.
Надовезивање¶
Две торке, односно листе, можемо надовезати (спојити у једну) коришћењем
операције +
. Тиме се формира нова торка, односно листа, док се
оригинали не мењају. Није могуће надовезати торку и листу, нити листу
и торку.
Висине девојчица и дечака у одељењу¶
![](../_static/img/question-mark.png)
Познате су висине девојчица и висине дечака у једном одељењу. Направи торку свих висина и израчунај затим број и просечну висину свих ђака.
Слично као што код бројева множење представља узастопно сабирање, исти
је случај и овде и може се наслутити да множење ниске природним бројем
заправо представља њено понављање одређени број пута. На пример, ако
желимо да направимо листу која садржи 100 нула, то можемо урадити
изразом [0] * 100
, док израз (0, 1, 2) * 3
гради
торку (0, 1, 2, 0, 1, 2, 0, 1, 2)
.
Сортирање¶
Елементе торке (или листе) веома је једноставно уредити од најмањег до
највећег (па и обратно, од највећег до најмањег). Функција sorted
се може применити и на торке и на листе и она на основу датих података
гради нову торку, односно листу која садржи исте податке, у сортираном
редоследу. Метода sort
применљива је само на листе и она мења
листу тако што њене елементе ређа у сортираном редоследу. Ово је
ефикасније него да се прави нова листа, али се оригинални редослед
елемената губи.
Три најјефтинија и најскупља производа¶
![](../_static/img/question-mark.png)
Дата је листа цена производа. Колико коштају три најјефтинија, а колико три најскупља производа?
Враћање торки из функције¶
Као што смо већ раније поменули, торке могу бити веома корисне да би се вратило више вредности из функције. Подсетимо се ове корисне технике.
Конверзија угла у степене и минуте¶
![](../_static/img/question-mark.png)
Напиши функцију која за угао дат у облику децималног броја степени одређује њему најближи угао дат у степенима и минутима. Употреби га да одредиш колико степени и минута има угао \(36,2^\circ\).
Видећете да се приликом прихватања резултата врши распакивање торке
тј. да се променљивима stepeni
и minuta
додељују редом први и
други елемент уређеног пара који је функција вратила.
Измене листе¶
Торке и ниске су имутабилни типови података, што значи да се, када се једном формирају, оне не могу даље мењати. Са друге стране, листе је могуће мењати. Појединачни елементи листе се могу мењати на следећи начин:
На првом месту у листи црвену боју смо заменили љубичастом, а на
последњем плаву са наранџастом, тако да на крају програма листа
boje
чува вредности ["purple", "green", "orange"]
.
Елемент на крај листе можемо додати методом append
. На пример,
уместо да мењамо, листу боја можемо да проширимо за две вредности.
На крају овог програма, листа садржи вредности ["red", "green", "blue", "purple", "orange"]
.
Елементе из листе можемо брисати помоћу del
. На пример, ако из
листе дана желимо да обришемо дане викенда, то можемо урадити како је приказано:
Сложене торке и листе¶
Торке и листе могу да буду елементи других торки, односно листа. Направимо,
на пример, торку која садржи податке о месецима током једне године
која није преступна. За сваки месец знамо назив и број дана и те
податке ћемо организовати помоћу уређених парова (на пример,
("април", 30)
).
Дани у месецу¶
Помоћну променљиву mesec
није било неопходно користити. Поправи
индексе у наредном програму тако да ради исто као и претходни.