avp26/u2/list_ops.py
2026-10-01 20:16:40 +02:00

82 lines
1.8 KiB
Python

def append(list1, list2):
"""Vráti nový zoznam obsahujúci všetky prvky list1, po ktorých nasledujú všetky prvky list2."""
result = []
for elm in list1:
result.append(elm)
for elm in list2:
result.append(elm)
return result
def concat(lists):
"""Spojí zoznamy obsiahnuté v lists do jedného zoznamu.
Sploštenie sa vykoná iba na jednej úrovni; vnorené zoznamy sa ďalej nesplošťujú."""
result = []
for lst in lists:
for eln in lst:
result.append(eln)
return result
def filter(function, seq):
"""Vráti nový zoznam s tými prvkami, pre ktoré volanie function(element) vráti True."""
result = []
for elm in seq:
if function(elm):
result.append(elm)
return result
def length(seq):
"""Vráti počet prvkov v zozname."""
cislo = 0
for elm in seq:
cislo += 1
return cislo
def map(function, seq):
"""Vráti nový zoznam, ktorého prvky vzniknú aplikovaním function(element) na každý prvok pôvodného zoznamu v pôvodnom poradí."""
cislo = []
for elm in seq:
cislo.append(function(elm))
return cislo
def foldl(function, seq, acc):
"""Spracuje prvky zľava doprava. Akumulácia začína hodnotou acc a pri každom prvku sa použije volanie function(accumulator, element)."""
for elm in seq:
acc = function(acc, elm)
return acc
def foldr(function, seq, acc):
"""Spracuje prvky sprava doľava. Akumulácia začína hodnotou acc a pri každom prvku sa použije volanie function(accumulator, element)."""
for elm in seq[::-1]:
acc = function(acc, elm)
return acc
def reverse(seq):
"""Vráti nový zoznam s prvkami v opačnom poradí."""
reverse_seq = []
for elm in seq[::-1]:
reverse_seq.append(elm)
return reverse_seq