PYTHON PROGRAMOZÁS
10. - 2D listák

Az egyszerű listák egydimenziós adatszerkezetek, csak hosszuk van.
Ha a listákban újabb lista van, akkor az adatszerkezet kétdimenziós: van "szélessége" és "magassága". (gyakorlatilag egy táblázat)
A kis listák a nagy lista elemei, egy lista elemeit vesszővel soroljuk fel. 


Típusalgoritmusok a kétdimenziós adatszerkezetekben 


LISTÁKAT TARTALMAZÓ LISTÁK BEJÁRÁSA (TK. 81. old.)
A következő lista egy vonósnégyes tagjainak jelenléti íve. Az ív egy hét munkanapjain mutatja a jelenlétet, ahol 1 szerepel benne, ott jelen volt a zenész, ahol 0, ott nem.
Egy-egy "kis lista" egy zenész jelenlétét mutatja be, a "nagy" lista pedig az egész zenekarét.

ív = [[1, 1, 1, 1, 1], #egyik hegedűs
       [1, 1, 1, 1, 0], 
       [1, 1, 0, 0, 0],
       [0, 1, 1, 1, 1]]
for vonós in ív:  #egymásba ágyazott ciklus
    for nap in vonós:
        if nap == 1:
            print('itt', ' ', sep='', end='')
        else:
            print('otthon', ' ', sep='', end='')
    print()  #minden zenész új sorban 


02 Jelenlétek száma1 - ÖSSZEGZÉS (TK. 82. old. 1. feladat)
(M
ennyi egyes van a "táblázatban"? )

ív = [[1, 1, 1, 1, 1], 
       [1, 1, 1, 1, 0],
       [1, 1, 0, 0, 0],
       [0, 1, 1, 1, 1]] 
adagok = 0
for vonós in ív:
    for nap in vonós:
        if nap == 1:
            adagok += 1 #vagy adagok = adagok + 1
print('Összesen', adagok, 'adagot kell fizetni pénteken.')


03 Jelenlétek száma2 - ÖSSZEGZÉS (TK. 82. old. 1. feladat)
(Megoldás SUM függvénnyel )

ív = [[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 0],
       [1, 1, 0, 0, 0],

       [0, 1, 1, 1, 1]]
adagok = 0
for vonós in ív:
    adagok += sum(vonós)
print('Összesen', adagok, 'adagot kell fizetni pénteken.')


04 Jelenlétek száma3 - MEGSZÁMOLÁS (TK. 82. old. 1.  feladat)
(Megoldás COUNT függvénnyel, ha szöveggel jelzik a jelenlétet és nem 1-essel )
Pl.: e betűk megszámolása -> 'rendetteremtettem'.count('e') = 6

ív = [[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 0],
       [1, 1, 0, 0, 0],

       [0, 1, 1, 1, 1]]
adagok = 0
for vonós in ív:
    adagok += vonós.count(1)
print('Összesen', adagok, 'adagot kell fizetni pénteken.')


05a Legtöbbet jelen lévő (TK. 82-83. old. 2. feladat)
(Melyik zenész volt a legtöbbet jelen a héten? Melyik a legkevesebbet? )

ív = [[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 0],
       [1, 1, 0, 0, 0],

       [0, 1, 1, 1, 1]]
sorszám = None
legnagyobb = 0
for index in range(len(ív)):
    vonós_jelenléte = sum(ív[index])
    if vonós_jelenléte > legnagyobb:
        legnagyobb = vonós_jelenléte
        sorszám = index
print('A(z) ', sorszám+1, '. vonós volt a legtöbbet jelen.', sep='')


05b Legtöbbet jelen lévő (TK. 82-83. old. 2. feladat)
Egy ciklussal előállítja azt a listát, amiben keresgélni kell, majd megkeressük a legnagyobb értéket (MAXIMUMKIVÁLASZTÁS) és megtudjuk az érték pozícióját (KIVÁLASZTÁS). 

ív = [[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 0],
       [1, 1, 0, 0, 0],

       [0, 1, 1, 1, 1]]
vonósok_jelenlétei = []
for vonós in ív:  #Ez a ciklus tölti fel az új listát az append() függvényt használva.
    vonós_jelenléte = sum(vonós)
    vonósok_jelenlétei.append(vonós_jelenléte)
sorszám = vonósok_jelenlétei.index(max(vonósok_jelenlétei))  
#INDEX-keresés, MAX-maximumkiválasztás
print('A(z) ', sorszám+1, '. vonós volt a legtöbbet jelen.', sep='')


07 Amikor mindenki itt volt (TK. 83. old. 4. feladat)
Nem egy vonóst, hanem egy napot vizsgálunk.
(Nem egy sor értékeit összegezzük, hanem egy oszlopét.)
 

ív = [[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 0],
       [1, 1, 0, 0, 0],

       [0, 1, 1, 1, 1]]
for nap_indexe in range(5):
    e_napon_ennyien_voltak = 0
    for vonós in ív:
        e_napon_ennyien_voltak += vonós[nap_indexe]  #ÖSSZEGZÉS: 0 vagy 1 hozzáadása (minden nap)
    if e_napon_ennyien_voltak == 4: #ELDÖNTÉS
        print('A(z) ', nap_indexe+1,'. napon mindenki jelen volt.', sep='')


Objektumok adatai kétdimenziós listákban 


Egy-egy lista egy-egy objektumról (diákról) szól, a lista elemei az objektumainkról tárolt tulajdonságok (név, nem, kor, e-mail-cím) 

08 Névsor és e-mail kiíratása (TK. 84. old. 5. feladat)

osztály = [["Noémi", "l", 15, "noemi@hipp.hopp"],
                 ["Dezső", "f", 17, "dezso2@nyikk.nyekk"],
                 ["Gizella", "l", 16, "gizi@pikk.pakk"],
                 ["Edömér", "f", 16, "edo@itt.ott"]]
for tag in osztály:
    print(tag[0], ": ", tag[-1], sep='')


09 Osztály átlagéletkora (TK. 84. old. 6. feladat)

osztály = [["Noémi", "l", 15, "noemi@hipp.hopp"],
                 ["Dezső", "f", 17, "dezso2@nyikk.nyekk"],
                 ["Gizella", "l", 16, "gizi@pikk.pakk"],

                 ["Edömér", "f", 16, "edo@itt.ott"]]
összeg = 0
for tag in osztály:
    összeg += tag[2]
print('Az osztály átlagéletkora', összeg/len(osztály), 'év.')


10 Fiúk és lányok (TK. 84. old. 7. feladat)
(A lányok vannak többen vagy a fiúk?)

osztály = [["Noémi", "l", 15, "noemi@hipp.hopp"],
                 ["Dezső", "f", 17, "dezso2@nyikk.nyekk"],
                 ["Gizella", "l", 16, "gizi@pikk.pakk"],

                 ["Edömér", "f", 16, "edo@itt.ott"]]
lányok = 0
for tag in osztály:
    if tag[1] == 'l':
        lányok += 1
if lányok > len(osztály) - lányok:
    print('A lányok vannak többen.')
elif lányok < len(osztály) - lányok:
    print('A fiúk vannak többen.')
else:
    print('A fiúk pont annyian vannak, mint a lányok.')

Készítsd el weboldaladat ingyen! Ez a weboldal a Webnode segítségével készült. Készítsd el a sajátodat ingyenesen még ma! Kezdd el