-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmapreduce.py
More file actions
118 lines (91 loc) · 3.19 KB
/
Copy pathmapreduce.py
File metadata and controls
118 lines (91 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Voorbeeld-code om te demonstreren hoe in Python gebruik gemaakt kan worden van
# Map/Filter/Reduce-functionaliteit.
#
# Dezelfde functionaliteit wordt steeds gedemonstreerd dmv. een for-loop,
# een Map/Reduce/Filter-implementatie met een gedefinieeerde functie, en
# een Map/Reduce/Filter-implementatie die gebruik maakt van lambda's.
from functools import reduce
LIST_OF_NUMBERS = [0, 1, 2, 3]
# Mapper: neemt een lijst met X elementen, en geeft een lijst met X elementen.
def multiply_with_for_loop(input_numbers):
output_numbers = []
for i in input_numbers:
output_numbers.append(input_numbers[i] * 10)
return output_numbers
def mymultiplier(x):
return x * 10
def multiply_with_map(input_numbers):
mapped = map(mymultiplier, input_numbers)
return mapped
def multiply_with_map_lambda(input_numbers):
mapped = map(lambda x: x * 10, input_numbers)
return mapped
result = multiply_with_for_loop(LIST_OF_NUMBERS)
print("Resultaten van for/mapper:")
print("For-loop: ", end='')
print(list(result))
result = multiply_with_map(LIST_OF_NUMBERS)
print("Mapper: ", end='')
print(list(result))
result = multiply_with_map_lambda(LIST_OF_NUMBERS)
print("Mapper (lambda): ", end='')
print(list(result))
# Voorbeeld-code voor een FILTER-functie.
# Filter: neemt een lijst met X elementen, en geeft een lijst met 0..X elementen.
def odd_with_for_loop(input_numbers):
output_numbers = []
for i in input_numbers:
if i % 2 != 0:
output_numbers.append(input_numbers[i])
return output_numbers
def myfilter(x):
return x % 2 != 0
def odd_with_filter(input_numbers):
filtered = filter(myfilter, input_numbers)
return filtered
def odd_with_filter_lambda(input_numbers):
filtered = filter(lambda x: x % 2 != 0, input_numbers)
return filtered
result = odd_with_for_loop(LIST_OF_NUMBERS)
print("Resultaten van for/filter:")
print("For-loop: ", end='')
print(list(result))
result = odd_with_filter(LIST_OF_NUMBERS)
print("Filter: ", end='')
print(list(result))
result = odd_with_filter_lambda(LIST_OF_NUMBERS)
print("Filter (lambda): ", end='')
print(list(result))
# Voorbeeld-code voor een REDUCER-functie.
# Reduce: neemt een lijst met X elementen, en geeft een enkele waarde terug
def sum_with_for_loop(input_numbers):
output_number = 0
for i in input_numbers:
output_number = output_number + input_numbers[i];
return output_number
def mysum(x, y):
return x + y
def sum_with_reduce(input_numbers):
summed = reduce(mysum, input_numbers, 0)
return summed
def sum_with_reduce_lambda(input_numbers):
summed = reduce(lambda x, y: x + y, input_numbers, 0)
return summed
result = sum_with_for_loop(LIST_OF_NUMBERS)
print("Resultaten van for/reduce:")
print("For-loop: ", end='')
print(result)
result = sum_with_reduce(LIST_OF_NUMBERS)
print("Filter: ", end='')
print(result)
result = sum_with_reduce_lambda(LIST_OF_NUMBERS)
print("Filter (lambda): ", end='')
print(result)
print("Eerst een mapper, dan een filter, dan een reducer:")
print(
reduce(lambda x, y: x * y,
filter(lambda x: x % 2 != 0,
map(lambda x: x * 5, LIST_OF_NUMBERS)
)
)
)