avp26/u2/list_ops.py
2026-09-29 18:59:17 +02:00

96 lines
2.2 KiB
Python

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