Adatstruktúrák
- List - Lista metódusai példával
- Tuple - Példa és kapcsolódó metódusok
- Sets - Példa
- Dictionary - {kulcs: érték} Példa és függvény paraméter
- Iterálás
- Dictionary - kulcs, értéken lehet egyszerre
- enumerate - megszámozva az elemeket
- zip - egyszerre több szekvencián
- reversed - uno reverse card
Ezek nem kötelező feladatok, csak megoldásuk közben könyebb megtanulni a dolgokat
- Készíts egy
Tuple
-t, majd írd ki az elemeit úgy, hogy egyszerre indulsz az elejétől és a végétől.
Pl.: ("A", "B", "C") esetén:(Spoiler:A C
B B
C Azip
) - Készíts egy programot, mely megszámolja egy szövegben,
hogy az egyes betűkből mennyi van.
(Spoiler:Sets
)
List
Listának az említetteken kívül van egy pár beépített függvénye.
>>> gyumolcs = ['narancs', 'alma', 'körte', 'banán', 'kiwi', 'alma', 'banán']
>>> gyumolcs.count('alma')
2
>>> gyumolcs.count('mandarin')
0
>>> gyumolcs.index('banán')
3
>>> gyumolcs.index('banán', 4) # Következő banán a 4. index után
6
>>> gyumolcs.reverse() # Elemek megfordítása helyben
>>> gyumolcs
['banán', 'alma', 'kiwi', 'banán', 'körte', 'alma', 'narancs']
>>> gyumolcs.append('szőlő') # Új elem a végére
>>> gyumolcs
['banán', 'alma', 'kiwi', 'banán', 'körte', 'alma', 'narancs', 'szőlő']
>>> gyumolcs.sort()
>>> gyumolcs
['alma', 'alma', 'banán', 'banán', 'szőlő', 'kiwi', 'narancs', 'körte']
>>> gyumolcs.pop() # Töröl egyet a végéről és azzal visszatér
'körte'
Például stack
-ként egy listát elég egyszerűen lehet
használni ha csak az append
és a pop
függvényt használjuk.
pop
mellet tudunk akár a del
-el is egy adott elemet
törölni.
>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]
Tuple
Lista mellett Tuple
-t is tudunk készíteni.
Ezek definiálásához csak értékeket kell felsorolnunk vesszővel elválasztva. (Akár zárójelbe is tehetjük őket)
>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Több tuple-t össze illeszthetünk:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
>>> # Nem tudjuk változtani az értékeit:
... t[0] = 88888
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> # Viszont lehet bennük változtatható objektum:
... v = ([1, 2, 3], [3, 2, 1])
>>> v
([1, 2, 3], [3, 2, 1])
>>> v[0][0] = 4
>>> v
([4, 2, 3], [3, 2, 1])
Egy függvényben *
-al tudjuk jelölni, hogy az extra mezőket
mely változóba szeretnénk tenni.
>>> def fv(*a):
... print(a)
...
>>> fv(2,3,4,5)
(2, 3, 4, 5)
Ilyenkor az átadott értékeket becsomagolja az a változóba, mint Tuple.
>>> fv((1,2,3))
((1, 2, 3),)
Sets
A set
egy duplikátumok nélküli lista.
Köztük a különböző halmaz műveleteket is ellehet végezni.
>>> kosar = {'alma', 'narancs', 'alma', 'korte', 'narancs', 'banan'}
>>> print(kosar) # Duplikátumok törölve lettek
{'korte', 'banan', 'alma', 'narancs'}
>>> 'narancs' in kosar # Tudjuk a tagokat gyorsan ellenőrizni
True
>>> 'szilva' in kosar
False
>>> # Alapértelmezett konstruktor a kapott sztringet
... # betűnként set-be konvertálja
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> # Halmaz műveletek
...
>>> a # Egyedi karakterek a-ban
{'b', 'c', 'a', 'd', 'r'}
>>> a - b # Betűk a-ban, de b-ben nem
{'d', 'b', 'r'}
>>> a | b # Betű a-ban vagy b-ben
{'b', 'c', 'm', 'z', 'a', 'l', 'd', 'r'}
>>> a & b # Betűk a-ban és b-ben is
{'a', 'c'}
>>> a ^ b # Betűk a-ban vagy b-ben,
{'b', 'm', 'l', 'z', 'd', 'r'} # metszetet kivéve
Dictionary
Kulcs - Érték párosokat tudunk ebben az adatstruktúrában tárolni.
>>> telefon = {'bella': 4098, 'kata': 4139}
>>> telefon['attila'] = 4127 # Így tudunk kulcs szerint indexelni
>>> telefon
{'bella': 4098, 'kata': 4139, 'attila': 4127}
>>> telefon['bella']
4098
>>> del telefon['kata']
>>> telefon['vivi'] = 4127
>>> telefon
{'bella': 4098, 'attila': 4127, 'vivi': 4127}
>>> list(telefon)
['bella', 'attila', 'vivi']
>>> sorted(telefon)
['attila', 'vivi', 'bella']
>>> 'attila' in telefon
True
>>> 'bella' not in telefon
False
Hasonlóan a Tuple
-höz, a függvényekben a **
-al tudjuk
jelölni azon változót, melyben szeretnénk a
kulcs érték párosokat összegyüjteni.
>>> def fv(**dic):
... print(dic)
...
>>> fv(a=1, b=2, c=3)
{'a': 1, 'b': 2, 'c': 3}
Iterálás
A felsorolt objektumok mind iterálható objektumok, tehát for ciklussal hasonlóan a listához végig tudunk menni rajtuk.
Dictionary
Egy Dictionary-n kulcs és érték párossal tudunk végig iterálni.
>>> kosar = {'alma': 23, 'korte': 41}
>>> for kulcs, ertek in kosar.items():
... print(kulcs, str(ertek) + " db.")
...
alma 23 db.
korte 41 db.
enumerate
Ha indexel szeretnénk végig iterálni, akkor
az enumerate
függvénnyel ezt megtudjuk oldani.
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print(i, v)
...
0 tic
1 tac
2 toe
zip
Egyszerre akár több szekvencián is végig tudunk menni a
zip
segítségével.
>>> kerdesek = ['neved', 'küldetésed', 'kedvenc szined']
>>> valaszok = ['Szofia', 'Átmenni anal ízisból', 'Kék']
>>> for k, v in zip(kerdesek, valaszok):
... print('Mi a {0}? {1}.'.format(k, v))
...
Mi a neved? Szofia.
Mi a küldetésed? Átmenni analízisból.
Mi a kedvenc színed? Kék.
Itt használtam a .format
függvényt. Ezzel egy szövegben
{szám}
-al megjelölt helyekre tudjuk beilleszteni a paraméterben
megadott változókat.
reversed
Akár meg is tudjuk fordítani a listánkat.
>>> for i in reversed(range(1, 10, 2)):
... print(i)
...
9
7
5
3
1