Python ταξινομημένο ()

Η συντεταγμένη ταξινόμηση () επιστρέφει μια ταξινομημένη λίστα από τα στοιχεία σε μια επαναλαμβανόμενη.

Η sorted()συνάρτηση ταξινομεί τα στοιχεία ενός δεδομένου επαναλαμβανόμενου σε μια συγκεκριμένη σειρά (είτε αύξουσα είτε φθίνουσα ) και επιστρέφει την ταξινομημένη επαναλαμβανόμενη ως λίστα.

Η σύνταξη της sorted()συνάρτησης είναι:

 ταξινομημένο (επαναλαμβανόμενο, κλειδί = Κανένα, αντίστροφο = Λάθος)

Παράμετροι για τη συντεταγμένη ταξινόμηση ()

sorted() μπορεί να λάβει το πολύ τρεις παραμέτρους:

  • iterable - Μια ακολουθία (συμβολοσειρά, πλειάδα, λίστα) ή συλλογή (σύνολο, λεξικό, παγωμένο σύνολο) ή οποιοδήποτε άλλο επαναληπτικό.
  • αντίστροφη (προαιρετική) - Εάν True, η ταξινομημένη λίστα αντιστρέφεται (ή ταξινομημένη με φθίνουσα σειρά). Προεπιλογές Falseεάν δεν παρέχονται.
  • key (Προαιρετικό) - Μια λειτουργία που χρησιμεύει ως κλειδί για τη σύγκριση ταξινόμησης. Προεπιλογές None.

Παράδειγμα 1: Ταξινόμηση συμβολοσειράς, λίστας και πλειάδας

 # vowels list py_list = ('e', 'a', 'u', 'o', 'i') print(sorted(py_list)) # string py_string = 'Python' print(sorted(py_string)) # vowels tuple py_tuple = ('e', 'a', 'u', 'o', 'i') print(sorted(py_tuple))

Παραγωγή

 ('a', 'e', ​​'i', 'o', 'u') ('P', 'h', 'n', 'o', 't', 'y') ('a' , 'e', ​​'i', 'o', 'u')

Παρατηρήστε ότι σε όλες τις περιπτώσεις επιστρέφεται μια ταξινομημένη λίστα.

Σημείωση: Μια λίστα έχει επίσης τη μέθοδο sort () που αποδίδει με τον ίδιο τρόπο όπως sorted(). Η μόνη διαφορά είναι ότι η sort()μέθοδος δεν επιστρέφει καμία τιμή και αλλάζει την αρχική λίστα.

Παράδειγμα 2: Ταξινόμηση σε φθίνουσα σειρά

Η sorted()συνάρτηση δέχεται μια reverseπαράμετρο ως προαιρετικό όρισμα.

Η ρύθμιση reverse = Trueταξινομεί το επαναλαμβανόμενο με φθίνουσα σειρά.

 # set py_set = ('e', 'a', 'u', 'o', 'i') print(sorted(py_set, reverse=True)) # dictionary py_dict = ('e': 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5) print(sorted(py_dict, reverse=True)) # frozen set frozen_set = frozenset(('e', 'a', 'u', 'o', 'i')) print(sorted(frozen_set, reverse=True))

Παραγωγή

 ('u', 'o', 'i', 'e', ​​'a') ('u', 'o', 'i', 'e', ​​'a') ('u', 'o' , "i", "e", "a")

κλειδί Παράμετρος στη λειτουργία ταξινόμησης Python ()

Εάν θέλετε τη δική σας εφαρμογή για ταξινόμηση, sorted()αποδέχεται επίσης μια keyλειτουργία ως προαιρετική παράμετρος.

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

 ταξινομημένο (επαναλαμβανόμενο, κλειδί = len)

Εδώ, len()είναι η ενσωματωμένη λειτουργία του Python για να μετρήσει το μήκος ενός αντικειμένου.

Η λίστα ταξινομείται με βάση το μήκος του στοιχείου, από το χαμηλότερο έως το υψηλότερο.

Παράδειγμα 3: Ταξινόμηση της λίστας χρησιμοποιώντας ταξινομημένο () με λειτουργία κλειδιού

 # take the second element for sort def take_second(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key sorted_list = sorted(random, key=take_second) # print list print('Sorted list:', sorted_list)

Παραγωγή

 Ταξινομημένη λίστα: ((4, 1), (2, 2), (1, 3), (3, 4))

Παράδειγμα 4: Ταξινόμηση με πολλαπλά πλήκτρα

Ας υποθέσουμε ότι έχουμε την ακόλουθη λίστα:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100, Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) )

Θέλουμε να ταξινομήσουμε τη λίστα με τέτοιο τρόπο ώστε ο μαθητής με τις υψηλότερες βαθμολογίες να είναι στην αρχή. Σε περίπτωση που οι μαθητές έχουν ίσες βαθμολογίες, πρέπει να ταξινομηθούν έτσι ώστε ο νεότερος συμμετέχων να είναι πρώτος.

Μπορούμε να επιτύχουμε αυτόν τον τύπο ταξινόμησης με πολλαπλά πλήκτρα επιστρέφοντας πλειάδα αντί για αριθμό.

Δύο πλειάδες μπορούν να συγκριθούν συγκρίνοντας τα στοιχεία τους ξεκινώντας από την πρώτη. Εάν υπάρχει ισοπαλία (τα στοιχεία είναι ίδια), συγκρίνεται το δεύτερο στοιχείο και ούτω καθεξής.

 >>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True

Ας χρησιμοποιήσουμε αυτήν τη λογική για να δημιουργήσουμε τη λογική ταξινόμησης.

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) def sorter(item): # Since highest marks first, least error = most marks error = 100 - item(1) age = item(2) return (error, age) sorted_list = sorted(participant_list, key=sorter) print(sorted_list)

Παραγωγή

 (("Jimmy", 90, 22), ("Terence", 75, 12), ("David", 75, 20), ("Alison", 50, 18), ("John", 45, 12) )

Επειδή η συνάρτηση λογικής ταξινόμησης είναι μικρή και ταιριάζει σε μία γραμμή, η lambdaσυνάρτηση χρησιμοποιείται στο εσωτερικό keyαντί να περνά ένα ξεχωριστό όνομα συνάρτησης.

Το παραπάνω πρόγραμμα μπορεί να γραφτεί χρησιμοποιώντας τη lambdaλειτουργία με τον ακόλουθο τρόπο:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) sorted_list = sorted(participant_list, key=lambda item: (100-item(1), item(2))) print(sorted_list)

Παραγωγή

 (("Jimmy", 90, 22), ("Terence", 75, 12), ("David", 75, 20), ("Alison", 50, 18), ("John", 45, 12) )

Για να μάθετε περισσότερα σχετικά με τις λειτουργίες lambda, επισκεφθείτε τις Λειτουργίες Python Lambda.

ενδιαφέροντα άρθρα...