Είδος λίστας Python ()

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

Η σύνταξη της sort()μεθόδου είναι:

 list.sort (κλειδί =…, αντίστροφη =…)

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

 ταξινομημένο (λίστα, κλειδί =…, αντίστροφη =…)

Σημείωση: Η απλούστερη διαφορά μεταξύ sort()και sorted()είναι: sort()αλλάζει άμεσα τη λίστα και δεν επιστρέφει καμία τιμή, ενώ sorted()δεν αλλάζει τη λίστα και επιστρέφει τη ταξινομημένη λίστα.

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

Από προεπιλογή, sort()δεν απαιτεί επιπλέον παραμέτρους. Ωστόσο, έχει δύο προαιρετικές παραμέτρους:

  • αντίστροφη - Αν True, η ταξινομημένη λίστα αντιστρέφεται (ή ταξινομημένη με φθίνουσα σειρά)
  • key - λειτουργία που χρησιμεύει ως κλειδί για τη σύγκριση ταξινόμησης

Επιστροφή τιμής από είδος ()

Η sort()μέθοδος δεν επιστρέφει καμία τιμή. Αντίθετα, αλλάζει την αρχική λίστα.

Εάν θέλετε μια συνάρτηση να επιστρέψει την ταξινομημένη λίστα αντί να αλλάξετε την αρχική λίστα, χρησιμοποιήστε το sorted().

Παράδειγμα 1: Ταξινόμηση μιας δεδομένης λίστας

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Παραγωγή

 Ταξινομημένη λίστα: ('a', 'e', ​​'i', 'o', 'u')

Ταξινόμηση με φθίνουσα σειρά

Η sort()μέθοδος δέχεται μια reverseπαράμετρο ως προαιρετικό όρισμα.

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

 list.sort(reverse=True)

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

 sorted(list, reverse=True)

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

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Παραγωγή

 Ταξινομημένη λίστα (σε φθίνουσα σειρά): ('u', 'o', 'i', 'e', ​​'a')

Ταξινόμηση με προσαρμοσμένη λειτουργία χρησιμοποιώντας πλήκτρο

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

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

 list.sort(key=len)

Εναλλακτικά για ταξινόμηση:

 sorted(list, key=len)

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

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

Γνωρίζουμε ότι μια πλειάδα ταξινομείται χρησιμοποιώντας την πρώτη παράμετρο από προεπιλογή. Ας δούμε πώς να προσαρμόσετε τη sort()μέθοδο ταξινόμησης χρησιμοποιώντας το δεύτερο στοιχείο.

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

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

Παραγωγή

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

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

Μπορούμε να ταξινομήσουμε τη λίστα με τον ακόλουθο τρόπο:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')

Παραγωγή

(('Όνομα': 'Alan Turing', 'ηλικία': 25, 'μισθός': 10000), ('Όνομα': 'John Hopkins', 'ηλικία': 18, 'μισθός': 1000), ('Όνομα ':' Mikhail Tal ',' ηλικία ': 40,' μισθός ': 15000), (' Όνομα ':' Sharon Lin ',' ηλικία ': 30,' μισθός ': 8000)) ((' Όνομα ':' John Hopkins ',' ηλικία ': 18,' μισθός ': 1000), (' Όνομα ':' Alan Turing ',' ηλικία ': 25,' μισθός ': 10000), (' Όνομα ':' Sharon Lin ', «ηλικία»: 30, «μισθός»: 8000), («Όνομα»: «Mikhail Tal», «ηλικία»: 40, «μισθός»: 15000)) ((«Όνομα»: «Mikhail Tal», «ηλικία» : 40, 'μισθός': 15000), ('Όνομα': 'Alan Turing', 'ηλικία': 25, 'μισθός': 10000), ('Όνομα ":" Sharon Lin "," ηλικία ": 30," μισθός ": 8000), (" Όνομα ":" John Hopkins "," ηλικία ": 18," μισθός ": 1000))

Εδώ, για την πρώτη περίπτωση, η προσαρμοσμένη λειτουργία μας επιστρέφει το όνομα κάθε υπαλλήλου. Δεδομένου ότι το όνομα είναι string, το Python το ταξινομεί από προεπιλογή χρησιμοποιώντας την αλφαβητική σειρά.

Για τη δεύτερη περίπτωση, η ηλικία ( int) επιστρέφεται και ταξινομείται με αύξουσα σειρά.

Για την τρίτη περίπτωση, η συνάρτηση επιστρέφει το μισθό ( int) και ταξινομείται με φθίνουσα σειρά χρησιμοποιώντας reverse = True.

Είναι καλή πρακτική να χρησιμοποιείτε τη συνάρτηση λάμδα όταν η συνάρτηση μπορεί να συνοψιστεί σε μία γραμμή. Έτσι, μπορούμε επίσης να γράψουμε το παραπάνω πρόγραμμα ως:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')

Παραγωγή

(('Όνομα': 'Alan Turing', 'ηλικία': 25, 'μισθός': 10000), ('Όνομα': 'John Hopkins', 'ηλικία': 18, 'μισθός': 1000), ('Όνομα ':' Mikhail Tal ',' ηλικία ': 40,' μισθός ': 15000), (' Όνομα ':' Sharon Lin ',' ηλικία ': 30,' μισθός ': 8000)) ((' Όνομα ':' John Hopkins ',' ηλικία ': 18,' μισθός ': 1000), (' Όνομα ':' Alan Turing ',' ηλικία ': 25,' μισθός ': 10000), (' Όνομα ':' Sharon Lin ', «ηλικία»: 30, «μισθός»: 8000), («Όνομα»: «Mikhail Tal», «ηλικία»: 40, «μισθός»: 15000)) ((«Όνομα»: «Mikhail Tal», «ηλικία» : 40, 'μισθός': 15000), ('Όνομα': 'Alan Turing', 'ηλικία': 25, 'μισθός': 10000), ('Όνομα ":" Sharon Lin "," ηλικία ": 30," μισθός ": 8000), (" Όνομα ":" John Hopkins "," ηλικία ": 18," μισθός ": 1000))

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

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