Knyga/Integruotosios funkcijos: Skirtumas tarp puslapio versijų

Iš Pitonas.
Nėra keitimo santraukos
Nėra keitimo santraukos
1 eilutė: 1 eilutė:
=== Integruotosios funkcijos ===
=== Integruotosios funkcijos ===
Integruotosios funkcijos, plačiau žinomos kaip ''built-in functions'', yra pitono interpretatoriuje apibrėžtos funkcijos. Tai yra globaliai prieinamos funkcijos, kurias gali naudoti bet kurioje kodo vietoje, priklausomai nuo tavo poreikių. Šios funkcijos atlieka konkrečius, dažnai naudojamus veiksmus, pvz., tam tikrus aritmetinius veiksmus:
Integruotosios funkcijos, plačiau žinomos kaip ''built-in functions'', yra pitono interpretatoriuje apibrėžtos funkcijos. Tai yra globaliai prieinamos funkcijos, kurias galima naudoti bet kurioje kodo vietoje, priklausomai nuo tavo poreikių. Šios funkcijos atlieka konkrečius, dažnai naudojamus veiksmus, pvz., tam tikrus aritmetinius veiksmus:


# Skaičių sumos suradimą - '''sum()''',  
# Skaičių sumos suradimą - '''sum()''',  
# Mažiausios arba didžiausios reikšmės suradimą - '''min()/max()''',
# Mažiausios arba didžiausios reikšmės suradimą - '''min()/max().'''
# Vidurkio apskaičiavimą - '''avg()'''.




Šiuo metu pitonas turi 71 integruotąją funkciją, visą jų sąrašą galima rasti [https://docs.python.org/3/library/functions.html#min čia]. Integruotųjų funkcijų sąrašas plečiasi su kiekviena nauja kalbos versija, įtraukiant naujas funkcijas, ir tokiu būdu palengvina programuotojo darbą. Funkcijų yra labai daug ir visų jų nenagrinėsime, tačiau aptarkime jau paminėtas integruotąsias funkcijas.
Šiuo metu pitonas turi 71 integruotąją funkciją, visą jų sąrašą galima rasti [https://docs.python.org/3/library/functions.html#min čia]. Integruotųjų funkcijų sąrašas plečiasi tobulėjant kalbai. Leidžiant naujas kalbos versijas yra įtraukiamos naujos funkcijos, ir tokiu būdu palengvinamas programuotojo darbas. Funkcijų yra labai daug ir visų jų nenagrinėsime, tačiau aptarkime jau paminėtas integruotąsias funkcijas.


=== Skaičių sekos sumos suradimui skirta integruotoji funkcija - sum() ===
=== Skaičių sekos sumos suradimui skirta integruotoji funkcija - sum() ===
Programuotojui neretai tenka surasti skaičių sekos/pateiktų kintamųjų sumą, tad pitonas pateikia itin paprastą integruotąją funkciją sum(). Ši funkcija atlieka vieną darbą - suskaičiuoja jai paduotų kintamųjų sumą. Funkcija priima du kintamuosius:
Programuotojui neretai tenka surasti skaičių sekos/pateiktų kintamųjų sumą, tad pitonas pateikia itin paprastą integruotąją funkciją '''sum()'''. Ši funkcija atlieka vieną darbą - suskaičiuoja jai paduotų kintamųjų sumą. Funkcija priima du kintamuosius:


# Iteruojamo tipo kintamuosius (sąrašai, kolekcijos) kurie savyje saugo skaičius (number tipo kintamuosius).
# Iteruojamo tipo kintamuosius (sąrašai, kolekcijos) kurie savyje saugo skaičius (number tipo kintamuosius).
# Pradinį skaičių, t. y. skaičių, prie kurio reikia pridėti sąraše esančių skaičių sumą. Šio skaičiaus reikšmė visada yra 0 (default = 0), jeigu funkcijai nėra paduotas konkretus skaičius, tad jis nėra privalomas kintamasis.
# Pradinį skaičių, t. y. skaičių, prie kurio reikia pridėti sąraše esančių skaičių sumą. Šio skaičiaus reikšmė visada yra 0 (default = 0), jeigu funkcijai nėra paduotas konkretus skaičius, tad jis nėra privalomas parametras.
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
skaičių_sąrašas = [5, 6, 10]
skaičių_sąrašas = [5, 6, 10]
34 eilutė: 33 eilutė:


=== Mažiausios/didžiausios reikšmės suradimas - min()/max() funkcijos ===
=== Mažiausios/didžiausios reikšmės suradimas - min()/max() funkcijos ===
min()/max() funkcijos iš esmės yra vienodos, priima vienodus funkcijos parametrus, skiriasi tik jų grąžinama reikšmė - arba mažiausia, arba didžiausia iš pateiktų kintamųjų. Funkcijos priima skirtigų tipų parametrus:
min()/max() funkcijos iš esmės yra vienodos, priima vienodus funkcijos parametrus, skiriasi tik jų grąžinama reikšmė - arba mažiausia, arba didžiausia iš pateiktų kintamųjų. Funkcijos priima skirtingų tipų parametrus:


# Iteruojamo tipo kintamuosius - sąrašai, kolekcijos,
# Iteruojamo tipo kintamuosius - sąrašai, kolekcijos,
40 eilutė: 39 eilutė:
# Tekstinės eilutės tipo kintamuosius.
# Tekstinės eilutės tipo kintamuosius.


Taip pat, funkcijos priima papildomus parametrus, skirtus modifikuoti algoritmą, pagal kurį yra grąžinamos min ir max reikšmės, bet jie nėra būtini. Kaip jau pastebėjote, šios funkcijos priima ir skaičiaus ir tekstinės eilutės tipo kintamuosius ir išveda jų min/max reikšmes.  
Taip pat, funkcijos priima papildomus parametrus, skirtus modifikuoti algoritmą, pagal kurį yra grąžinamos min ir max reikšmės, bet jie nėra būtini. Kaip jau pastebėjote, šios funkcijos priima ir skaičiaus, ir tekstinės eilutės tipo kintamuosius ir išveda jų min/max reikšmes.  


==== Skaičių min/max verčių suradimas ====
==== Skaičių min/max verčių suradimas ====
108 eilutė: 107 eilutė:
print(max(puodo_formos, key=len))
print(max(puodo_formos, key=len))
</syntaxhighlight>Min() atveju kodas grąžins tą patį "puodas", bet kaip bus max() atveju? Tiek "puodelis", tiek "puodukas" turi vienodą raidžių skaičių - 8, tad šiuo atveju kodas grąžina tą teksto eilutę, kuri sąraše yra anksčiausiai. Šiam veikimui neturi įtakos tai, ar paduodamas sąrašas su teksto eilutėmis, ar teksto eilutės paduodamos kaip atskiri kintamieji - tuo atveju, jeigu dvi teksto eilutės yra vienodo ilgio, grąžinama ta, kuri buvo pirmesnė sekoje.
</syntaxhighlight>Min() atveju kodas grąžins tą patį "puodas", bet kaip bus max() atveju? Tiek "puodelis", tiek "puodukas" turi vienodą raidžių skaičių - 8, tad šiuo atveju kodas grąžina tą teksto eilutę, kuri sąraše yra anksčiausiai. Šiam veikimui neturi įtakos tai, ar paduodamas sąrašas su teksto eilutėmis, ar teksto eilutės paduodamos kaip atskiri kintamieji - tuo atveju, jeigu dvi teksto eilutės yra vienodo ilgio, grąžinama ta, kuri buvo pirmesnė sekoje.
=== Vidurkio skaičiavimo funkcija - statistics.mean() ===
Pitonas, priešingai negu kai kurios kitos programavimo kalbos, neturi integruotosios funkcijos skaičių sekos vidurkio apskaičiavimui. Tad šios užduoties įgyvendinimui mums reikės pasitelkti statistics modulį. Statistics modulis naudojamas įvairiems veiksmams su skaičių sekomis - vidurkio, medianos skaičiavimams ir t. t. Prie savo kodo išorinius modelius galima prisidėti juos naudojant importo sakinį:<syntaxhighlight lang="python">
import statistics
//tolesnis programos kodas
</syntaxhighlight>Importavus statistics modulį, galime pradėti naudoti mean() funkciją. Statistics.mean() funkcija priima sąrašus, kolekcijas ir kitus iteruojamo tipo kintamuosius (tam tikrus objektus ir pan.), tad, priešingai negu min()/max() funkcijoms, negalima paduoti atskirų kintamųjų - turi būti paduotas būtent sąrašas, ar jo alternatyva.<syntaxhighlight lang="python">
import statistics
skaičiai = [10, 20, 30, 40, 50]
print(statistics.mean(skaičiai))
</syntaxhighlight>Šis kodas išves aritmetinį, sąraše esančių skaičių vidurkį - 30 ((10 + 20 + 30 + 40 + 50) / 5 = 30). statistics.mean() funkcija eina per visus sąrašo elementus, juos susumuoja ir padalina iš sąrašo elementų skaičiaus. Ši funkcija veikia su realiaisiais skaičiais, t. y. neigiami, teigiami, dešimtainiai skaičiai yra priimami. <syntaxhighlight lang="python">
import statistics
realieji_skaičiai = [-5, 5, 5.5]
print(statistics.mean(realieji_skaičiai))
</syntaxhighlight>Šis kodas taip pat išves aritmetinį vidurkį - 1.8(3) - kuris paskaičiuojamas: -5 + 5 + 5.5 = 5.5, 5.5 / 3 = 1.8(3).
Daugiau informacijos apie statistics modulį ir kitas jam priklausančias fukncijas galima rasti [https://docs.python.org/3/library/statistics.html#module-statistics čia].

15:47, 7 sausio 2025 versija

Integruotosios funkcijos

Integruotosios funkcijos, plačiau žinomos kaip built-in functions, yra pitono interpretatoriuje apibrėžtos funkcijos. Tai yra globaliai prieinamos funkcijos, kurias galima naudoti bet kurioje kodo vietoje, priklausomai nuo tavo poreikių. Šios funkcijos atlieka konkrečius, dažnai naudojamus veiksmus, pvz., tam tikrus aritmetinius veiksmus:

  1. Skaičių sumos suradimą - sum(),
  2. Mažiausios arba didžiausios reikšmės suradimą - min()/max().


Šiuo metu pitonas turi 71 integruotąją funkciją, visą jų sąrašą galima rasti čia. Integruotųjų funkcijų sąrašas plečiasi tobulėjant kalbai. Leidžiant naujas kalbos versijas yra įtraukiamos naujos funkcijos, ir tokiu būdu palengvinamas programuotojo darbas. Funkcijų yra labai daug ir visų jų nenagrinėsime, tačiau aptarkime jau paminėtas integruotąsias funkcijas.

Skaičių sekos sumos suradimui skirta integruotoji funkcija - sum()

Programuotojui neretai tenka surasti skaičių sekos/pateiktų kintamųjų sumą, tad pitonas pateikia itin paprastą integruotąją funkciją sum(). Ši funkcija atlieka vieną darbą - suskaičiuoja jai paduotų kintamųjų sumą. Funkcija priima du kintamuosius:

  1. Iteruojamo tipo kintamuosius (sąrašai, kolekcijos) kurie savyje saugo skaičius (number tipo kintamuosius).
  2. Pradinį skaičių, t. y. skaičių, prie kurio reikia pridėti sąraše esančių skaičių sumą. Šio skaičiaus reikšmė visada yra 0 (default = 0), jeigu funkcijai nėra paduotas konkretus skaičius, tad jis nėra privalomas parametras.
skaičių_sąrašas = [5, 6, 10]

print(sum(skaičių_sąrašas))

Šis kodas į konsolę išves skaičių, esančių skaičių_sąrašas kintamajame, sumą - 21.

skaičių_sąrašas = [5, 6, 10]
pradinis_skaičius = 9

print(sum(skaičių_sąrašas, pradinis_skaičius))

Šis kodas į konsolę išves skaičių, esančių skaičių_sąrašas kintamajame, bei pradinis_skaičius sumą - 30.

Kaip matome, pirmuoju atveju, pradinis_skaičius nebuvo paduotas sum() funkcijai, bet dėl to nekilo problemų, nes nepadavus šio kintamojo, funkcija jį traktuoja kaip 0 ir galutiniame rezultate gauna 0 + 21 = 21.

sum() funkcija veikia tiek su sveikaisiais skaičiais (teigiami, neigiami skaičiai ir nulis), tiek su skaičiais su kableliu:

skaičių_sąrašas = [5, 6, 10.5]

print(sum(skaičių_sąrašas))

Šis kodas į konsolę išves skaičių, esančių skaičių_sąrašas kintamajame, sumą - 21,5. Atkreipk dėmesį, kad dešimtainis skaičius yra su tašku ".", o ne kaip mums įprasta su kableliu ",". Panaudojus kablelį, sąrašas jį supras kaip dar vieną sąrašo elementą, o ne kaip dešimtainį skaičių.

Mažiausios/didžiausios reikšmės suradimas - min()/max() funkcijos

min()/max() funkcijos iš esmės yra vienodos, priima vienodus funkcijos parametrus, skiriasi tik jų grąžinama reikšmė - arba mažiausia, arba didžiausia iš pateiktų kintamųjų. Funkcijos priima skirtingų tipų parametrus:

  1. Iteruojamo tipo kintamuosius - sąrašai, kolekcijos,
  2. Skaičiaus tipo kintamuosius,
  3. Tekstinės eilutės tipo kintamuosius.

Taip pat, funkcijos priima papildomus parametrus, skirtus modifikuoti algoritmą, pagal kurį yra grąžinamos min ir max reikšmės, bet jie nėra būtini. Kaip jau pastebėjote, šios funkcijos priima ir skaičiaus, ir tekstinės eilutės tipo kintamuosius ir išveda jų min/max reikšmes.

Skaičių min/max verčių suradimas

Norint surasti skaičiaus min/max vertę min()/max() funkcijoms reikia paduoti kelis kintamuosius su skaičiais arba paduoti sąrašą, kuriame saugomi skaičiai. Skaičiai nėra svarbūs - gali būti ir sveikieji, ir realieji skaičiai.

Pavyzdys su sąrašu:

skaičių_sąrašas = [5, 6, 10]

print(min(skaičių_sąrašas))
print(max(skaičių_sąrašas))

Abi šios funkcijos patikrins sąraše esančius skaičius, juos palygins tarpusavyje ir funkcija min() grąžins mažiausią skaičių - 5, o max() funkcija grąžins didžiausią - 10. min() ir max() funkcijos priima ne tik sąrašus, bet ir pavienius kintamuosius:

skaičius_vienas = 5
skaičius_du = 7.7
skaičius_trys  = -2

print(min(skaičius_vienas, skaičius_du, skaičius_trys))
print(max(skaičius_vienas, skaičius_du, skaičius_trys))

Kaip matome, abi šios funkcijos gali priimti kelis kintamuosius ir lyginti juos tarpusavyje. Kad būtų įdomiau, šį kartą nadojame realiuosius skaičius - neigiamus skaičius bei skaičius su kableliu. Šis kodas, patikrinęs duotus skaičius, min() ir max() funkcijose grąžins atitinkamai mažiausią skaičių - -2 ir didžiausią skaičių - 7.7.

Tekstinės eilutės min/max verčių suradimas

Su skaičių lyginimu, klausimų kaip ir nekyla, bet kaip yra lyginami tekstinės eilutės tipo kintamieji? Teksto eilutės tipo kintamieji lyginami leksikografiškai pagal jų Unikodo (Unikodas (angl. Unicode) – standartas, apibrėžiantis beveik visų kalbų abėcėlių bei papildomų rašto ženklų kodavimą kompiuteriuose) koduotę, t. y. teksto eilutės paverčiamos jų Unikodo išraiška ir lyginamos tarpusavyje.

Teksto eilutės yra lyginamos po vieną simbolį - lyginant "obuolys" ir "bananas" pirmiausia lygina "o" ir "b", tada "b" ir "a" ir t. t. Pirmas unikodo išraiškos nesutapimas nusprendžia, kuri tekstinė eilutė bus "mažesnė" ar "didesnė". Pavyzdžiui, palyginkime žodžius "adata" ir "adyti".

Išsiskaidykime abu žodžius po vieną raidę ir suraskime jų unikodo atitikmenis:

a - 97, a - 97

d - 100, d - 100

a - 97, y - 121

t - 116, t - 116

a - 97, i - 105

Kaip matome, pirmos dvi raidės ("a" ir "d") sutampa abiejuose žodžiuose, analogiškai ir jų unikodo išraiška sutampa. Trečioji raidė jau nebesutampa - "a" ir "y". Raidės "a" unikodo išraiška yra 97, "y" unkodo išraiška - 121. Šis nesutapimas ir nurodo, kad adata, leksikografiniu požiūriu yra "mažesnis" žodis negu adyti - 97 < 121. Verta paminėti ir tai, kad raidžių "A" ir "a" unikodo išraiška skiriasi - lyginat žodžius "Adata" ir "adata", žodis "Adata" būtų "mažesnis" negu "adata", kadangi raidės "A" unikodas yra 65, o raidės "a" - 97.

Analogiškai kaip ir skaičių atveju kintamieji gali būti paduodami kaip tekstinių eilučių sąrašas, arba kaip atskiri kintamieji.

vaisiai = ["obuolys", "bananas", "ananasas"]

print(min(vaisiai))
print(max(vaisiai))

Šiuo atveju sąrašo elementai yra lyginami tarpusavyje ir kodas gražintų mažiausią tekstinę eilutę - "ananasas"(kadangi nesutampa pirmoji visų trijų žodžių raidė, ir raidė "a", turi mažiausią unikodo reikšmę), o didžiausią - "obuolys" (analogiškai raidė "o" turi didžiausią unikodo reikšmę iš trijų).

vaisius_1 = "obuolys"
vaisius_2 = "bananas"
vaisius_3 = "ananasas"

print(min(vaisius_1, vaisius_2, vaisius_3))
print(max(vaisius_1, vaisius_2, vaisius_3))

Šis kodas grąžins analogiškas reikšmes kaip ir aukščiau pateiktas kodas su sąrašu, tiesiog vietoje sąrašo, min() ir max() funkcijoms yra paduodami atskiri kintamieji su tekstinėmis eilutėmis.

Papildomi parametrai

Kadangi aptarėme min() ir max() funkcijas su tekstine eilute, galime gana nesunkiai pasižiūrėti, kaip galime modifikuoti min() ir max() funkcijų algoritmą, pagal kurį yra išvedams mažiausia ar didžiausia vertė. Norėdami modifikuoti algoritmą, turime paduoti funkcijai kintamąjį "key", pagal šį kintamąjį, funkcija nusprendžia pagal kokį algoritmą vertinti pateiktus kintamuosius. Jeigu mes į min() ar max() funkciją paduosime kintamąjį "key = len", mes nurodome funkcijoms, kad pateiktos tekstinės eilutės būtų vertinamos ne pagal jų unikodo išraišką, o pagal jų ilgį:

puodo_formos = ["puodas", "puodelis"]

print(min(puodo_formos, key=len))
print(max(puodo_formos, key=len))

Šiuo atveju kodas nebežiūrės į raidžių unikodo reikšmes, tiesiog skaičiuos, kiek žodžiai turi raidžių - mažiausiai turintis raidžių žodis bus "puodas", daugiausiai - "puodelis". Tačiau yra išimtis, pvz.:

puodo_formos = ["puodas", "puodelis", "puodukas"]

print(min(puodo_formos, key=len))
print(max(puodo_formos, key=len))

Min() atveju kodas grąžins tą patį "puodas", bet kaip bus max() atveju? Tiek "puodelis", tiek "puodukas" turi vienodą raidžių skaičių - 8, tad šiuo atveju kodas grąžina tą teksto eilutę, kuri sąraše yra anksčiausiai. Šiam veikimui neturi įtakos tai, ar paduodamas sąrašas su teksto eilutėmis, ar teksto eilutės paduodamos kaip atskiri kintamieji - tuo atveju, jeigu dvi teksto eilutės yra vienodo ilgio, grąžinama ta, kuri buvo pirmesnė sekoje.

Vidurkio skaičiavimo funkcija - statistics.mean()

Pitonas, priešingai negu kai kurios kitos programavimo kalbos, neturi integruotosios funkcijos skaičių sekos vidurkio apskaičiavimui. Tad šios užduoties įgyvendinimui mums reikės pasitelkti statistics modulį. Statistics modulis naudojamas įvairiems veiksmams su skaičių sekomis - vidurkio, medianos skaičiavimams ir t. t. Prie savo kodo išorinius modelius galima prisidėti juos naudojant importo sakinį:

import statistics

//tolesnis programos kodas

Importavus statistics modulį, galime pradėti naudoti mean() funkciją. Statistics.mean() funkcija priima sąrašus, kolekcijas ir kitus iteruojamo tipo kintamuosius (tam tikrus objektus ir pan.), tad, priešingai negu min()/max() funkcijoms, negalima paduoti atskirų kintamųjų - turi būti paduotas būtent sąrašas, ar jo alternatyva.

import statistics

skaičiai = [10, 20, 30, 40, 50]
print(statistics.mean(skaičiai))

Šis kodas išves aritmetinį, sąraše esančių skaičių vidurkį - 30 ((10 + 20 + 30 + 40 + 50) / 5 = 30). statistics.mean() funkcija eina per visus sąrašo elementus, juos susumuoja ir padalina iš sąrašo elementų skaičiaus. Ši funkcija veikia su realiaisiais skaičiais, t. y. neigiami, teigiami, dešimtainiai skaičiai yra priimami.

import statistics

realieji_skaičiai = [-5, 5, 5.5]
print(statistics.mean(realieji_skaičiai))

Šis kodas taip pat išves aritmetinį vidurkį - 1.8(3) - kuris paskaičiuojamas: -5 + 5 + 5.5 = 5.5, 5.5 / 3 = 1.8(3).

Daugiau informacijos apie statistics modulį ir kitas jam priklausančias fukncijas galima rasti čia.