Η συνάρτηση map για την επανάληψη αντικειμένων στην Python
Ας υποθέσουμε ότι έχουμε τη συνάρτηση square για
την αύξηση αριθμών στο τετράγωνο. Και υπάρχει μια λίστα,
στις στοιχεία της οποίας πρέπει να εφαρμοστεί
αυτή η συνάρτηση:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
Στην Python για να λύσουμε αυτό το πρόβλημα, μπορούμε
να χρησιμοποιήσουμε μια ειδική συνάρτηση map.
Δέχεται ως παραμέτρους τη συνάρτηση και τη λίστα,
στα στοιχεία της οποίας πρέπει να εφαρμοστεί.
Ας χρησιμοποιήσουμε την map για να λύσουμε
το παράδειγμα:
res = map(square, lst)
print(res)
Κάθε λίστα, όπως και κάθε σύνθετο αντικείμενο, καταλαμβάνει πολύ χώρο στη συστημική μνήμη της Python. Επομένως, για την εξοικονόμηση πόρων μετά από την εκτέλεση του κώδικα, δεν θα επιστραφεί νέα λίστα, αλλά ένα ειδικό επαναληπτικό αντικείμενο map:
<map object at 0x000001F16674BA00>
Ας το επαναλάβουμε με βρόχο:
for el in res:
print(el)
Ως αποτέλεσμα, θα εμφανιστούν όλα τα στοιχεία της νέας λίστας:
4
9
36
64
225
Για να δημιουργήσουμε μια νέα λίστα από το αντικείμενο map,
πρέπει να εφαρμόσουμε σε αυτό τη συνάρτηση list:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
Ως αποτέλεσμα, θα εμφανιστεί η ακόλουθη λίστα:
[4, 9, 36, 64, 225]
Επίσης, όταν εργάζεστε με τη συνάρτηση map,
μπορείτε να ορίσετε μια lambda συνάρτηση στην πρώτη παράμετρο.
Ας ξαναγράψουμε το προηγούμενο παράδειγμα χρησιμοποιώντας
μια lambda συνάρτηση:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Ξαναγράψτε τον ακόλουθο κώδικα χρησιμοποιώντας lambda συνάρτηση:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Ξαναγράψτε τον ακόλουθο κώδικα χρησιμοποιώντας lambda συνάρτηση:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))