Zoznam (pole/postupnosť)

Zoznam (pole/postupnosť)

je indexovaná a meniteľná  postupnosť hodnôt, prvá hodnota je pod indexom 0. Počet hodnôt v poli je obmedzena len veľkosťou operačnej pamäte.

deklarácia zoznamu:

 zoznam=[ ]

príklad:

p=[1,2,3,8,7,6,1,9]

Vytvorili sme zoznam s názvom p v ktorom je 8 hodnôt. Index (pozícia) prvej hodnoty je na 0 a poslednej je na 7

print(p[0]) – 1

print(p[7]) – 9

print(p[2]+p[6]) – 4

pridávanie prvkov na koniec zoznamu:

p.append(hodnota)

zistenie počtu hodnôt v poli:

len(p)

Pozor počet členov zoznamu sa nerovná indexu posledného člena ale počet hodnôt -1 = poslednému indexu.

Príklad:

Vytvorte n prvkový zoznam dvojciferných náhodných čísel – vytvoríme zoznam, kde počet prvkov (n) načítate od užívateľa a pomocou náhodných čísel random vygenerujete náhodné čísla 10 – 99 a pridáte ich do zoznamu

vytvorenie zoznamu:

import random

n=int(input(‘zadaj pocet prvkov zoznamu’))

z=[ ]

for i in range(n):

z.append(random.randint(10,99))

vypísanie zoznamu:

print(z)

vypísanie zoznamu pomocou pozícií (indexov) pozícia sa udáva v []:

for i in range(n):

print(z[i])

vypísanie zoznamu priamo po prvkoch:

for prvok in z:

print(prvok)

Ukážky programov:

Pole s DEF maximum

import random

def vytvor(n,t):
    for i in range(t):
        n.append(random.randrange(100))
    return(n)

def maximalny(n):
    najvac=pole[0]
    poz=0
    for i in range(1,len(pole)):
        if najvac<pole[i]:
            najvac=pole[i]
            poz=i
    return(najvac,poz)

p=int(input(‚zadaj pocet prvkov‘))
pole=[ ]
pole=vytvor(pole,p)

maxim=maximalny(pole)

print(pole)

print(maxim)

Pole, DEF, NSD

import random

def nsd(x,y):
    while x!=y:
        if x>y:
            x=x-y
        else:
            y=y-x
    return(x)

def napln(a,n):
    for i in range(n):
        a.append(random.randrange(100))
    return(a)

pole=[ ]
napln(pole,10)

print(pole)


hcc=nsd(pole[0],pole[1])

for i in range(2,len(pole)-1):
    hcc=nsd(hcc,pole[i])

print(hcc)

  • Vytvorte n-prvkovu množinu náhodných čísel
  • Zistite minimum a maximum
  • Zistite aritmetický priemer postupnosti
  • Zistite a pamätajte si párne čísla
  • Zistite či sa zadaný prvok nachádza v postupnosti a ak nie, nech o tom informuje užívateľa vhodným spôsobom
  • Zistite či sa prvok nachádza a vymeňte ho s novým prvkom načítaním od užívateľa
  • Zistite počet výskytov zadaného čísla, pamätajte si kde sa nachádzajú
  • Nahraďte všetky výskyty novou hodnotou
  • Nájdite najmenší a najväčší prvok a zistite ich rozdiel
  • Vypíšte prvky ktoré spĺňajú podmienky: väčšie, menšie ako; delitelné; prvočísla;
  • Zistite NSD celej postupnosti
  • Zistite všetky prvočísla postupnosti

Funkcie

  • funkcia len(postupnosť) -> vráti počet prvkov postupnosti
  • funkcia sum(postupnosť) -> vypočíta číselný súčet prvkov postupnosti
  • funkcia max(postupnosť) -> vráti maximálny prvok postupnosti (t.j. jeho hodnotu)
  • funkcia min(postupnosť) -> vráti minimálny prvok postupnosti

Metódy:

metóda count()

Volanie metódy: zoznam.count(hodnota)

vráti počet výskytov danej hodnoty v zozname. Táto metóda je immutable lebo nemení obsah zoznamu.

metóda index()

Volanie metódy: zoznam.index(hodnota)

vráti index prvého výskytu danej hodnoty v zozname. Táto metóda je immutable lebo nemení obsah zoznamu. Funkcia spadne na chybe, ak sa daná hodnota v zozname nenachádza.

metóda append()

Volanie metódy: zoznam.append(hodnota)

pridá na koniec zoznamu nový prvok – zoznam sa takto predĺži o 1. Táto metóda je mutable lebo mení obsah zoznamu.

metóda pop()

Volanie metódy: zoznam.pop()

odoberie z konca zoznamu posledný prvok – zoznam sa takto skráti o 1. Táto metóda je mutable lebo mení obsah zoznamu. Funkcia vracia hodnotu odobratého prvku. Ak bol zoznam prázdny, funkcia nič nevracia ale spadne na chybe.

metóda pop() s indexom

Volanie metódy: zoznam.pop(index)

doberie zo zoznamu príslušný prvok (daný indexom) – zoznam sa takto skráti o 1. Táto metóda je mutable lebo mení obsah zoznamu. Funkcia vracia hodnotu odobratého prvku. Ak bol zoznam prázdny, funkcia nič nevracia ale spadne na chybe.

metóda insert()

Volanie metódy: zoznam.insert(index, hodnota)

pridá na dané miesto zoznamu nový prvok – zoznam sa takto predĺži o 1. Táto metóda je mutable lebo mení obsah zoznamu. Funkcia nič nevracia, preto nemá zmysel priraďovať jej volanie do nejakej premennej (teda vracia hodnotu None).

metóda remove()

Volanie metódy: zoznam.remove(hodnota)

odoberie zo zoznamu prvý výskyt prvku s danou hodnotou – zoznam sa takto skráti o 1. Táto metóda je mutable lebo mení obsah zoznamu. Funkcia nič nevracia (teda vracia None). Ak sa daná hodnota v zozname nenachádza, funkcia spadne na chybe.

metóda sort()

Volanie metódy: zoznam.sort()

zmení poradie prvkov zoznamu tak, aby boli usporiadané vzostupne – zoznam takto nemení svoju dĺžku. Táto metóda je mutable lebo mení obsah zoznamu. Funkcia nič nevracia (teda vracia None). Ak sa prvky v zozname nedajú navzájom porovnávať (napríklad sú tam čísla aj reťazce), funkcia spadne na chybe.

metóda split()

Keďže je to reťazcová metóda, má tvar: reťazec.split()

Metóda rozbije daný reťazec na samostatné reťazce a uloží ich do zoznamu (teda vracia zoznam reťazcov). Predpokladáme, že tieto podreťazce sú navzájom oddelené „medzerovými“ znakmi (medzera, znak konca riadku, tabulátor). V helpe (napríklad help(“.split)) sa môžete dozvedieť ďalšie možnosti tejto funkcie.

metóda join()

Metóda zlepí všetky reťazce z daného zoznamu reťazcov do jedného, pričom ich navzájom oddelí uvedeným oddeľovačom, t. j. nejakým zadaným reťazcom. Ako zoznam môžeme uviesť ľubovoľnú postupnosť (iterovateľný objekt) reťazcov.

Opäť je to reťazcová metóda. Má tvar: oddeľovač.join(zoznam_reťazcov)

Verzia na stiahnutie:

Python – reťazce – str

ZDROJ: http://python.input.sk/

Zopár funkcií a metód pre prácu s reťazcami.

Reťazec je zoznam (pole) zložený zo znakov, to znamená je indexovaný od 0.

STRING

Už poznáme tieto štandardné funkcie:

  • len() – dĺžka reťazca
  • int(), float() – prevod reťazca na celé alebo desatinné číslo
  • bool() – prevod reťazca na True alebo False (ak je prázdny, výsledok bude False)
  • str() – prevod čísla (aj ľubovoľnej inej hodnoty) na reťazec
  • ord(), chr() – prevod do a z Unicode

Okrem nich existujú ešte aj tieto tri užitočné štandardné funkcie:

  • bin() – prevod celého čísla do reťazca, ktorý reprezentuje toto číslo v dvojkovej sústave
  • hex() prevod celého čísla do reťazca, ktorý reprezentuje toto číslo v šestnástkovej sústave
  • oct() – prevod celého čísla do reťazca, ktorý reprezentuje toto číslo v osmičkovej sústave

 

Metódy

  • reťazec.count(podreťazec) – zistí počet výskytov podreťazca v reťazci
  • reťazec.find(podreťazec) – zistí index prvého výskytu podreťazca v reťazci
  • reťazec.lower() – vráti reťazec, v ktorom prevedie všetky písmená na malé
  • retazec.upper() – vráti reťazec, v ktorom prevedie všetky písmená na veľké
  • reťazec.replace(podreťazec1, podreťazec2) – vráti reťazec, v ktorom nahradí všetky výskyty podreťazec1 iným reťazcom podreťazec2
  • reťazec.strip() – vráti reťazec, v ktorom odstráni medzery na začiatku a na konci reťazca (odfiltruje pritom aj iné oddeľovacie znaky ako ‚\n‘ a ‚\t‘)

s=’ahoj drahusik ako sa mas?‘

  • s.capitalize() – dá prvé písmeno v str. na veľké

‚Ahoj drahusik ako sa mas?‘

  • s.swapcase() – otočí malé na veľké a veľké na malé

‚AHOJ DRAHUSIK AKO SA MAS?

  • s.title() – každé písmeno na začiatku slova da veľké

‚Ahoj Drahusik Ako Sa Mas?‘

  •  m.replace(‚ ‚,“)-nahradí reťazec reťazcom

‚AhojDrahusikAkoSaMas?‘

Ukážky:

>>> s=’ahoj drahusik ako sa mas?‘

>>> s

‚ahoj drahusik ako sa mas?‘

>>> s.capitalize

<built-in method capitalize of str object at 0x031868A8> – bez ()

>>> s.capitalize()

‚Ahoj drahusik ako sa mas?‘

>>> s.swapcase()

‚AHOJ DRAHUSIK AKO SA MAS?‘

>>> s.title()

‚Ahoj Drahusik Ako Sa Mas?‘

>>> m=s.title()

>>> m

‚Ahoj Drahusik Ako Sa Mas?‘

>>> m.replace(‚ ‚,“)

‚AhojDrahusikAkoSaMas?‘

Článok pre stiahnutie / tlač. – STR_Retazce