Lambda Expressions στο Python

Εκφράσεις λάμδα

Τα Lambda Expressions χρησιμοποιούνται ιδανικά όταν πρέπει να κάνουμε κάτι απλό και ενδιαφέρονται περισσότερο να ολοκληρώσουν γρήγορα τη δουλειά αντί να ονομάσουν επίσημα τη λειτουργία. Οι εκφράσεις λάμδα είναι επίσης γνωστές ως ανώνυμες συναρτήσεις.

Οι εκφράσεις Lambda στο Python είναι ένας σύντομος τρόπος για να δηλώσετε μικρές και ανώνυμες συναρτήσεις (δεν είναι απαραίτητο να παρέχετε ένα όνομα για τις λειτουργίες lambda).

Οι λειτουργίες Lambda συμπεριφέρονται όπως οι κανονικές συναρτήσεις που δηλώνονται με τη defλέξη-κλειδί. Έρχονται βολικά όταν θέλετε να ορίσετε μια μικρή λειτουργία με συνοπτικό τρόπο. Μπορούν να περιέχουν μόνο μία έκφραση, επομένως δεν ταιριάζουν καλύτερα σε λειτουργίες με δηλώσεις ροής ελέγχου.

Σύνταξη μιας συνάρτησης Lambda

lambda arguments: expression

Οι συναρτήσεις Lambda μπορούν να έχουν οποιοδήποτε όρισμα, αλλά μόνο μία έκφραση.

Παράδειγμα κώδικα

# Lambda function to calculate square of a number square = lambda x: x ** 2 print(square(3)) # Output: 9 # Traditional function to calculate square of a number def square1(num): return num ** 2 print(square(5)) # Output: 25

Στο παραπάνω παράδειγμα lambda, lambda x: x ** 2αποδίδεται ένα ανώνυμο αντικείμενο λειτουργίας που μπορεί να συσχετιστεί με οποιοδήποτε όνομα. Έτσι, συσχετίσαμε το αντικείμενο συνάρτησης με square. Έτσι από τώρα και στο εξής μπορούμε να καλέσουμε το squareαντικείμενο όπως οποιαδήποτε παραδοσιακή συνάρτηση, για παράδειγμαsquare(10)

Παραδείγματα λειτουργιών λάμδα

Αρχάριος

lambda_func = lambda x: x**2 # Function that takes an integer and returns its square lambda_func(3) # Returns 9

Ενδιάμεσος

lambda_func = lambda x: True if x**2 >= 10 else False lambda_func(3) # Returns False lambda_func(4) # Returns True

Συγκρότημα

my_dict = {"A": 1, "B": 2, "C": 3} sorted(my_dict, key=lambda x: my_dict[x]%3) # Returns ['C', 'A', 'B']

Θήκη χρήσης

Ας υποθέσουμε ότι θέλετε να φιλτράρετε τους περίεργους αριθμούς από ένα list. Θα μπορούσατε να χρησιμοποιήσετε έναν forβρόχο:

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] filtered = [] for num in my_list: if num % 2 != 0: filtered.append(num) print(filtered) # Python 2: print filtered # [1, 3, 5, 7, 9]

Ή θα μπορούσατε να το γράψετε ως ένα μοναδικό σκάφος με κατανοητές λίστας:

filtered = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] if x % 2 != 0]

Αλλά μπορεί να μπείτε στον πειρασμό να χρησιμοποιήσετε την ενσωματωμένη filterλειτουργία. Γιατί; Το πρώτο παράδειγμα είναι λίγο πολύ ρητό και το μονόπλευρο μπορεί να είναι πιο δύσκολο να γίνει κατανοητό. Αλλά filterπροσφέρει το καλύτερο και των δύο λέξεων. Επιπλέον, οι ενσωματωμένες λειτουργίες είναι συνήθως γρηγορότερες.

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] filtered = filter(lambda x: x % 2 != 0, my_list) list(filtered) # [1, 3, 5, 7, 9]

ΣΗΜΕΙΩΣΗ: στο Python 3 ενσωματωμένες λειτουργίες επιστρέφουν αντικείμενα γεννήτριας, οπότε πρέπει να καλέσετε list. Στο Python 2, από την άλλη πλευρά, επιστρέφουν ένα list, tupleή string.

Λοιπόν τι έγινε? Είπατε filterνα λάβετε κάθε στοιχείο my_listκαι να εφαρμόσετε τις εκφράσεις λάμδα. Οι τιμές που επιστρέφουν Falseφιλτράρονται.

Περισσότερες πληροφορίες:

  • Επίσημα Έγγραφα