9  Drugo

Nabori

Nabori so urejeni in nespremenljivi. Definira se jih z običajnimi oklepaji (). Do elementov dostopamo z indeksi od 0 naprej, kot pri seznamih. Naboru ne moremo dodati novih elementov, ko je enkrat ustvarjen. Glej tudi: https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences

Vrednosti v naborih lahko “odpakiramo” (ang. unpacking) nazaj v spremenljivke.

sadje = ("jabolko", "banana", "češnja")
zeleno, rumeno, rdece = sadje
print(zeleno)
print(rumeno)
print(rdece)
jabolko
banana
češnja

Nabor lahko odpakiramo v manj spremenljivk, kot je elementov nabora, če eni od spremenljivk pred ime dodamo *. V to spremenljivko se bo shranil seznam presežnih elementov. Glej npr. https://www.w3schools.com/python/python_tuples_unpack.asp

Množice

Množice niso urejene in so nespremenljive. Definira se jih z zavitimi oklepaji. Prazno množico lahko dobimo tako, da pokličemo funkcijo set(). Vrednosti v množici so unikatne (ne moremo dodati dveh enakih). Do elementov lahko dostopamo z zanko. Nove elemente lahko dodamo z mnozica.add(element). Glej tudi: https://docs.python.org/3/tutorial/datastructures.html#sets

*Rekurzija

Dober članek o uporabi rekurzije za izračun Fibbonaccijevega zaporedja v Pythonu. Poglavje Using Recursion and a Python Class lahko preskočite. https://realpython.com/fibonacci-sequence-python/

*Uvažanje modulov

Delo z moduli lepo opisuje dokumentacija (predvsem prva polovica strani).

*Merjenje časa izvajanja programa

Glej https://docs.python.org/3/library/timeit.html

*Izpeljani seznami/slovarji/množice

Če želimo ustvariti seznam s kvadrati celih števil, lahko to naredimo z zanko:

kvadrati = []
for i in range(10):
    kvadrati.append(i * i)
print(kvadrati)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Na kratko lahko tak seznam ustvarimo z izpeljanim seznamom:

kvadrati2 = [i * i for i in range(10)]
print(kvadrati2)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Dodamo lahko tudi pogoj:

poved = 'the rocket came back from mars'
samoglasniki_poved = [i for i in poved if i in 'aeiou']
print(samoglasniki_poved)
['e', 'o', 'e', 'a', 'e', 'a', 'o', 'a']

Podoben pristop lahko uporabimo tudi za slovarje in množice.

kvadrati3 = {i: i * i for i in range(10)}
print(kvadrati3)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
poved = "life, uh, finds a way"
samoglasniki_poved = {i for i in poved if i in 'aeiou'}
print(samoglasniki_poved)
{'e', 'i', 'u', 'a'}