from random import randrange
znamky = [randrange(1, 6) for _ in range(30)]
print(*znamky)
1 1 2 3 3 2 5 3 3 1 4 2 2 5 1 5 1 4 2 4 2 4 5 5 5 2 1 5 5 1
print(*sorted(znamky))
1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 5 5 5
9 žiackych knižiek
#po jednej známke pridávame
usporiadana = []
for znamka in range(1, 6):
for hodnota in znamky:
if hodnota == znamka:
usporiadana.append(hodnota)
print(*usporiadana)
1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 5 5 5
#spocitame pocet
usporiadana = []
for znamka in range(1, 6):
pocet = 0
for hodnota in znamky:
if hodnota == znamka:
pocet += 1
usporiadana += [znamka]*pocet
print(*usporiadana)
1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 5 5 5
znamky.count(1) #počet výskytov
7
usporiadana = []
for znamka in range(1, 6):
usporiadana.extend([znamka]*znamky.count(znamka))
print(*usporiadana)
1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 5 5 5
jednotky, dvojky, trojky, stvorky, patky = [0]*5 #a, b, c, d, e
for znamka in znamky:
if znamka == 1:
jednotky += 1
elif znamka == 2:
dvojky += 1
elif znamka == 3:
trojky += 1
elif znamka == 4:
stvorky += 1
else:
patky += 1
print(jednotky, dvojky, trojky, stvorky, patky)
7 7 4 4 8
Čo ak usporiadavame výšky ľudí (0-2500 mm) ?
vysky = [randrange(0, 2501) for _ in range(30)]
print(*vysky)
1185 1727 297 64 553 519 1164 408 1551 1355 1850 1370 1350 1429 1883 1599 471 2313 460 1559 1989 25 1951 2090 107 258 2158 995 2158 1292
pocet = [0]*2501
for vyska in vysky:
pocet[vyska] += 1
print(pocet[1])
0
print(pocet[1951])
1
print(*pocet)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
pocet = [0]*6
for znamka in znamky:
pocet[znamka] += 1
print(*pocet[1:])
7 7 4 4 8
pocet = [0]*6
for i in range(len(znamky)): #for (int i=0; i < znamky.length; i++)
pocet[znamky[i]] += 1
print(*pocet[1:])
{64 : 1, 2158 : 2} #kluc: hodnota
{64: 1, 2158: 2}
slovnik = {64 : 1, 2158 : 2}
slovnik[64]
1
#vysky ako mapa TreeMap (usporiadana)/HashMap (neusporiadana)
pocet = {}
for vyska in vysky:
pocet[vyska] += 1
print(pocet[1])
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_14364\1364961884.py in <cell line: 4>() 3 4 for vyska in vysky: ----> 5 pocet[vyska] += 1 6 7 print(pocet[1]) KeyError: 1185
#vysky ako mapa TreeMap (usporiadana)/HashMap (neusporiadana)
pocet = {}
for vyska in vysky:
if vyska in pocet:
pocet[vyska] += 1
else: #vytvor novu hodnotu
pocet[vyska] = 1
print(pocet)
{1185: 1, 1727: 1, 297: 1, 64: 1, 553: 1, 519: 1, 1164: 1, 408: 1, 1551: 1, 1355: 1, 1850: 1, 1370: 1, 1350: 1, 1429: 1, 1883: 1, 1599: 1, 471: 1, 2313: 1, 460: 1, 1559: 1, 1989: 1, 25: 1, 1951: 1, 2090: 1, 107: 1, 258: 1, 2158: 2, 995: 1, 1292: 1}
#defaultdict
from collections import defaultdict
pocet = defaultdict(int)
for vyska in vysky:
pocet[vyska] += 1
print(pocet)
defaultdict(<class 'int'>, {1185: 1, 1727: 1, 297: 1, 64: 1, 553: 1, 519: 1, 1164: 1, 408: 1, 1551: 1, 1355: 1, 1850: 1, 1370: 1, 1350: 1, 1429: 1, 1883: 1, 1599: 1, 471: 1, 2313: 1, 460: 1, 1559: 1, 1989: 1, 25: 1, 1951: 1, 2090: 1, 107: 1, 258: 1, 2158: 2, 995: 1, 1292: 1})
A, B, A, C, Fx, D, A, E
znamky = [ 'A', 'B', 'C', 'A', 'Fx', 'D', 'A', 'E']
# cez mapu
from collections import defaultdict
pocet = defaultdict(int)
for znamka in znamky:
pocet[znamka] += 1
print(pocet)
defaultdict(<class 'int'>, {'A': 3, 'B': 1, 'C': 1, 'Fx': 1, 'D': 1, 'E': 1})
#slovnik napevno
pocet = { 'A': 0, 'B' :0, 'C': 0, 'D': 0, 'E': 0, 'Fx': 0}
for znamka in znamky:
pocet[znamka] += 1
print(pocet)
{'A': 3, 'B': 1, 'C': 1, 'D': 1, 'E': 1, 'Fx': 1}
Usporiadavame objekty podľa vlastnosti, tabuľku podľa jedného stĺpca
#String znamky[n][2] ... 0-predmet, 1-znamka
znamky = [ ('PAZ1a', 'A'), ('PAZ1b', 'C'), ('INSb', 'B'), ('ALG2a', 'A')] #tabulka
znamky
[('PAZ1a', 'A'), ('PAZ1b', 'C'), ('INSb', 'B'), ('ALG2a', 'A')]
usporiadane = []
for znamka in ['A', 'B', 'C', 'D', 'E', 'Fx']:
for hodnotenie in znamky:
if hodnotenie[1] == znamka:
usporiadane.append(hodnotenie)
print(usporiadane)
[('PAZ1a', 'A'), ('ALG2a', 'A'), ('INSb', 'B'), ('PAZ1b', 'C')]
udaje = [ {'meno': 'R', 'prezvisko': 'KB', 'vyska': 178},
{'meno': 'J', 'prezvisko': 'H', 'vyska': 185},
{'meno': 'P', 'prezvisko': 'JS', 'vyska': 160}
]
udaje
[{'meno': 'R', 'prezvisko': 'KB', 'vyska': 178}, {'meno': 'J', 'prezvisko': 'H', 'vyska': 185}, {'meno': 'P', 'prezvisko': 'JS', 'vyska': 160}]
udaje[1]
{'meno': 'J', 'prezvisko': 'H', 'vyska': 185}
udaje[1]['meno']
'J'
udaje[1]['vyska']
185
#usporiadanie podla vysky
usporiadane = []
for vyska in range(200):
for udaj in udaje:
if udaj['vyska'] == vyska:
usporiadane.append(udaj)
usporiadane
[{'meno': 'P', 'prezvisko': 'JS', 'vyska': 160}, {'meno': 'R', 'prezvisko': 'KB', 'vyska': 178}, {'meno': 'J', 'prezvisko': 'H', 'vyska': 185}]
znamky = [ (chr(randrange(65, 90)), randrange(1, 6)) for _ in range(20)]
print(*znamky)
('K', 1) ('T', 3) ('E', 5) ('M', 5) ('V', 3) ('T', 2) ('X', 3) ('O', 2) ('V', 2) ('O', 2) ('M', 4) ('O', 1) ('I', 4) ('U', 1) ('T', 5) ('O', 3) ('K', 3) ('W', 4) ('Y', 5) ('I', 2)
Prvým prechodom spočítame počty jednotlivých známok
pocet = [0]*6
for hodnotenie in znamky:
pocet[hodnotenie[1]] += 1
print(pocet[1:])
[3, 5, 5, 3, 4]
CountingSort
¶