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

⚡ Έξυπνη Σύνοψη

Python Η συνάρτηση list sort() ταξινομεί τα στοιχεία μιας λίστας στη θέση τους, αύξουσα από προεπιλογή ή φθίνουσα μέσω της παραμέτρου reverse, ενώ μια προαιρετική συνάρτηση key ταξινομεί με βάση προσαρμοσμένα κριτήρια, όπως μήκος, πεδία πλειάδας ή συναρτήσεις που ορίζονται από τον χρήστη.

  • 🔘 Σύνταξη: Η μέθοδος sort() δέχεται προαιρετικές παραμέτρους κλειδιού και αντίστροφης παραμέτρου και τροποποιεί την αρχική λίστα χωρίς να δημιουργεί αντίγραφο.
  • ☑️ Έλεγχος παραγγελιών: Ορίζοντας την παράμετρο reverse σε True, οι τιμές ταξινομούνται από την υψηλότερη στη χαμηλότερη αντί για την προεπιλεγμένη αύξουσα σειρά.
  • Βασική παράμετρος: Μια συνάρτηση κλειδιού όπως η len ταξινομεί στοιχεία με βάση μια παράγωγη τιμή, όπως το μήκος συμβολοσειράς ή ένα πεδίο πλειάδας.
  • 🧪 ταξινόμηση έναντι ταξινομημένου: Η μέθοδος sort() αλλάζει τη λίστα στη θέση της και επιστρέφει None, ενώ η μέθοδος sorted() επιστρέφει μια νέα λίστα και διατηρεί την αρχική.
  • Προσαρμοσμένα κριτήρια: Οι εκφράσεις Lambda και οι συναρτήσεις που ορίζονται από τον χρήστη επιτρέπουν στην sort() να ταξινομεί πλειάδες, λεξικά και επώνυμες πλειάδες με βάση οποιοδήποτε επιλεγμένο χαρακτηριστικό.
  • 🤖 Ροές εργασίας τεχνητής νοημοσύνης: Οι αγωγοί μηχανικής μάθησης ταξινομούν τις προβλέψεις με βάση τη βαθμολογία και επιλέγουν τα κορυφαία αποτελέσματα πριν από την κατάταξη ή την αξιολόγηση.

Python Ταξινόμηση λίστας()

Σε τι βρίσκεται η μέθοδος sort(). Python?

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

Σύνταξη της μεθόδου ταξινόμησης σε Python

Η συνάρτηση ταξινόμησης έχει την ακόλουθη σύνταξη:

List.sort(key=…, reverse=…)

Η συνάρτηση ταξινόμησης έχει δύο προαιρετικές παραμέτρους, δηλαδή:

  • Κλειδί:- Χρησιμοποιείται για την ταξινόμηση μιας συνάρτησης με βάση ένα κριτήριο ταξινόμησης.
  • Reverse: – δέχεται την τιμή είτε ως true είτε ως false. Εάν είναι true, αυτή η προσαρμοσμένη συνάρτηση ταξινομεί τη λίστα κατά φθίνουσα σειρά.

Ταξινόμηση μιας λίστας με αύξουσα σειρά χρησιμοποιώντας τη μέθοδο Ταξινόμηση σε Python

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

Παράδειγμα:

Python code:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Παραγωγή:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code Επεξήγηση:

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

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

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

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

Ας δούμε το παρακάτω παράδειγμα:

Python code:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Παραγωγή:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Σημείωση: Βεβαιωθείτε ότι η αντιστοίχιση της λέξης "True" στην αντίστροφη παράμετρο ξεκινά με κεφαλαία "T" για να αποφύγετε τυχόν σφάλματα χρόνου εκτέλεσης.

Ταξινόμηση μιας λίστας πλειάδων χρησιμοποιώντας τη μέθοδο Ταξινόμηση σε Python

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

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

Σύνταξη:

Lambda arguments: expression

Η παραπάνω σύνταξη είναι ισοδύναμη με τον παρακάτω κώδικα python:

def name (arguments):
return expression

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

Python code:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Παραγωγή:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code Επεξήγηση:

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

Ας δούμε το παρακάτω παράδειγμα που χρησιμοποιεί την έκφραση λάμδα:

Python code:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Παραγωγή:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Επεξήγηση:

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

Ταξινόμηση στοιχείων λίστας χρησιμοποιώντας το Len ως βασική παράμετρο

Το Len είναι μια ενσωματωμένη συνάρτηση που καθορίζει το μήκος του στοιχείου. Το μήκος που καθορίζεται μπορεί να χρησιμοποιηθεί για την ευρετηρίαση στη συνάρτηση ταξινόμησης. Για να το κάνουμε αυτό, αντιστοιχίζουμε το Len στη συνάρτηση Python βασική παράμετρος της συνάρτησης ταξινόμησης.

Ο ακόλουθος Python Ο κώδικας δείχνει πώς να χρησιμοποιήσετε τη συνάρτηση Len με τη συνάρτηση ταξινόμησης.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Παραγωγή:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code Επεξήγηση:

Ταξινόμηση στοιχείων λίστας χρησιμοποιώντας το Len

  • Το μήκος του στοιχείου γίνεται δείκτης για την παράμετρο κλειδί για να τακτοποιήσει τη λίστα σε αύξουσα σειρά.
  • Η συνάρτηση Len υπολογίζει το μήκος κάθε στοιχείου που υπάρχει στη λίστα βάσης.
  • Διατηρεί το πιο κοντό στοιχείο στην αριστερή πλευρά και το μεγαλύτερο στοιχείο στη δεξιά πλευρά.
  • Εδώ, οι λέξεις alto και java έχουν μήκος 4, οι οποίες ταξινομούνται πρώτες στη λίστα, ακολουθούμενες από Guru99, το οποίο έχει μήκος 6.

Αυτό το παράδειγμα επεξηγεί την έννοια της αντίστροφης παραμέτρου στη συνάρτηση ταξινόμησης όπως φαίνεται παρακάτω:

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Παραγωγή:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Ταξινόμηση στοιχείων λίστας χρησιμοποιώντας τη λειτουργία που καθορίζεται από το χρήστη ως βασική παράμετρο

Μπορείτε επίσης να χρησιμοποιήσετε μια συνάρτηση που ορίζεται από τον χρήστη ως βασική παράμετρο για να ταξινομήσετε μια λίστα. Ακολουθεί ένα παράδειγμα:

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Παραγωγή:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code Επεξήγηση:

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

Διαφορά μεταξύ της μεθόδου ταξινόμησης και της μεθόδου ταξινόμησης σε Python

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

Python Σύνταξη:

sorted (list_name, reverse=…., key=..)

Code Επεξήγηση:

  • Η συνάρτηση ταξινόμησης ταξινομεί τη λίστα σε αύξουσα ή φθίνουσα σειρά.
  • Η συνάρτηση δέχεται τρεις παραμέτρους, εκ των οποίων δύο παράμετροι είναι προαιρετικού τύπου και μία παράμετρος του απαιτούμενου τύπου.
  • Η παράμετρος list_name απαιτείται όταν χρησιμοποιείτε τη μέθοδο Ταξινόμησης.
  • Η μέθοδος Ταξινόμησης μπορεί να λάβει οποιονδήποτε τύπο επαναληπτικής λίστας ως είσοδο.
  • Οι βασικές παράμετροι και οι αντίστροφες παράμετροι είναι προαιρετικές παράμετροι σύμφωνα με τη μέθοδο ταξινόμησης σε Python.

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

Python code:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Παραγωγή:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code Επεξήγηση:

  • Η αρχική λίστα μεταβιβάζεται ως απαιτούμενη παράμετρος για την ταξινομημένη συνάρτηση.
  • Η μέθοδος Ταξινόμησης επιστρέφει μια νέα λίστα εκτός από την αρχική λίστα.
  • Εφόσον δεν μεταβιβάζονται πρόσθετες παράμετροι στη μέθοδο ταξινόμησης, η νέα λίστα ταξινομείται από προεπιλογή σε αύξουσα σειρά.
  • Η συνάρτηση ταξινόμησης δεν δημιουργεί νέα λίστα.

Τα ακόλουθα είναι τα σημεία που αφορούν τις βασικές ομοιότητες και διαφορές:

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

Πότε να χρησιμοποιήσετε τη μέθοδο ταξινόμησης ή τη μέθοδο ταξινόμησης;

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

Python code:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Παραγωγή:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code Επεξήγηση:

  • Η βασική λίστα ταξινομείται χρησιμοποιώντας και τη συνάρτηση ταξινόμησης και τη συνάρτηση ταξινόμησης.
  • Η βασική λίστα χάνεται όταν εφαρμόζεται η λειτουργία ταξινόμησης.
  • Η συνάρτηση ταξινόμησης δεν πρέπει να εφαρμόζεται στο αρχικό σύνολο δεδομένων. Θα πρέπει να χρησιμοποιείται όταν υπάρχει μια έκδοση αντιγραφής του αρχικού συνόλου δεδομένων.
  • Η συνάρτηση Ταξινόμηση διατηρεί την αρχική λίστα. Δεν το παρακάμπτει.
  • Αυτό προσφέρει καλύτερα tracευχρηστία και αποτελεσματική διαχείριση δεδομένων.

Συχνές Ερωτήσεις

Μεταβιβάστε το key=str.lower στη μέθοδο sort(), για παράδειγμα names.sort(key=str.lower). Κάθε συμβολοσειρά συγκρίνεται με πεζά γράμματα, επομένως τα 'Apple' και 'banana' ταξινομούνται αλφαβητικά ανεξάρτητα από την κεφαλαιοποίηση. Η αρχική πεζά-κεφαλαία κάθε στοιχείου διατηρείται στην τελική ταξινομημένη λίστα.

Η ταξινόμηση μιας λίστας με όλους τους αριθμούς ή όλες τις συμβολοσειρές λειτουργεί, αλλά η ανάμειξη άσχετων τύπων, όπως ακέραιοι αριθμοί και συμβολοσειρές, δημιουργεί ένα σφάλμα τύπου (TypeError), επειδή Python Δεν είναι δυνατή η σύγκριση τους. Μετατρέψτε πρώτα τις τιμές σε έναν συγκρίσιμο τύπο ή περάστε μια συνάρτηση κλειδιού που επιστρέφει συγκρίσιμα κλειδιά.

Python Ιστορικά χρησιμοποιούσε το Timsort, ένα υβρίδιο της ταξινόμησης συγχώνευσης και της ταξινόμησης εισαγωγής. Από την έκδοση 3.11, ο διερμηνέας χρησιμοποιεί το Powersort, μια παραλλαγή που προέρχεται από το Timsort με μια πιο έξυπνη πολιτική συγχώνευσης. Και τα δύο είναι σταθερά και εκτελούνται σε χρόνο O(n log n) στη χειρότερη περίπτωση.

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

Η μέθοδος sort() εκτελείται σε χρόνο O(n log n) στις χειρότερες και μέσες περιπτώσεις. Σε δεδομένα που είναι ήδη ως επί το πλείστον ταξινομημένα, προσεγγίζει το O(n), επειδή ο υποκείμενος αλγόριθμος ανιχνεύει και επαναχρησιμοποιεί υπάρχουσες ταξινομημένες εκτελέσεις αντί να τις επαναταξινομήσει.

Μεταβιβάστε ένα κλειδί που μετατρέπει κάθε στοιχείο κατά τη σύγκριση, για παράδειγμα nums.sort(key=int). Στη συνέχεια, η λίστα ταξινομείται κατά αριθμητική τιμή και όχι κατά χαρακτήρα, επομένως το '10' ταξινομείται σωστά μετά το '9'. Τα αποθηκευμένα στοιχεία παραμένουν ως συμβολοσειρές. Μόνο η σύγκριση χρησιμοποιεί την ακέραια τιμή τους.

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

Ναι. Το GitHub Copilot και οι βοηθοί τεχνητής νοημοσύνης δημιουργούν κλήσεις sort() και sorted(), συμπεριλαμβανομένων των βασικών συναρτήσεων και των εκφράσεων λάμδα, από ένα σύντομο σχόλιο. Μπορούν να αναδιαμορφώσουν τους βρόχους σε μεμονωμένες εντολές ταξινόμησης, αν και θα πρέπει να ελέγξετε την ταξινόμηση και να επιβεβαιώσετε το αποτέλεσμα σε περιπτώσεις ακραίων περιπτώσεων.

Συνοψίστε αυτήν την ανάρτηση με: