a = [1,5,6,9,10,-1]
def max_value (a,b):
return a if a > b else b
def max_sequence(x):
result = x[0]
for element in x:
result = max_value(result, element)
return result
print(max_sequence(a))
def min_value(a,b):
return b if a > b else a
def min_sequence(x):
result = x[0]
for element in x:
result = min_value(result, element)
return result
print(min_sequence(a))
def reduce1(fn, x):
result = x[0]
for element in x:
result = fn(result, element)
return result
def reduce2(fn, x, init): # change to fn
result = init
for element in x:
result = fn(result, element)
return result
def sum1(a,b):
return a + b
print(reduce1(max_value, a))
print(reduce1(min_value, a))
print(reduce2(sum1, a, 0)) # there is a bug, add an initial value at the end
print(reduce2(max_value, a, a[0]))
#===============================================
from functools import reduce
print(reduce(sum1,a,0)) # same as line 32; sum1 is a callback function; a is a list