Πώς να ταξινομήσετε λίστες στην Python

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

Στην Python, μπορείτε να χρησιμοποιήσετε τη μέθοδο sort() για να ταξινομήσετε μια λίστα στη θέση της. Ή μπορείτε να χρησιμοποιήσετε την ενσωματωμένη συνάρτηση sorted() για να λάβετε ένα ταξινομημένο αντίγραφο της λίστας.

Σε αυτό το σεμινάριο, θα μάθετε:

  • Σύνταξη της μεθόδου sort() και της συνάρτησης sorted().
  • Παραδείγματα κώδικα ταξινόμησης λιστών σε αύξουσα και φθίνουσα σειρά
  • Προσαρμόστε την ταξινόμηση χρησιμοποιώντας την παράμετρο κλειδί
  • Διαφορά μεταξύ sort() έναντι sorted()

Ας ξεκινήσουμε!👩🏽‍💻

Σύνταξη της μεθόδου Python sort().

Η μέθοδος sort() δρα σε μια λίστα Python. Και ταξινομεί τη λίστα στη θέση του—και τροποποιεί την αρχική λίστα.

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

<list>.sort(reverse = True | False, key = <func>)

Ας αναλύσουμε τώρα την παραπάνω σύνταξη.

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

Στην επόμενη ενότητα, θα ξεκινήσετε να κωδικοποιείτε απλά παραδείγματα.

Πώς να ταξινομήσετε τη λίστα Python σε αύξουσα σειρά

Σκεφτείτε τους αριθμούς της λίστας. Για να ταξινομήσετε τη λίστα με αύξουσα σειρά, μπορείτε να καλέσετε τη μέθοδο sort() στη λίστα.

▶ Εκτελέστε το παρακάτω απόσπασμα κώδικα.

nums = [25,13,6,17,9]
nums.sort()
print(nums)

# Output: [6, 9, 13, 17, 25]

Οι αριθμοί της λίστας έχουν ταξινομηθεί με αύξουσα σειρά και η αρχική λίστα έχει τροποποιηθεί. Αυτό ονομάζεται επιτόπια ταξινόμηση.

Πώς να ταξινομήσετε τη λίστα Python με φθίνουσα σειρά

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

nums = [25,13,6,17,9]
nums.sort(reverse = True)
print(nums)

# Output: [25, 17, 13, 9, 6]

Μπορείτε να δείτε ότι η λίστα είναι πλέον ταξινομημένη με φθίνουσα σειρά.

Πώς να χρησιμοποιήσετε το κλειδί με τη μέθοδο Python sort().

Σε αυτήν την ενότητα, ας χρησιμοποιήσουμε την παράμετρο κλειδί και ας προσαρμόσουμε την ταξινόμηση.

Εδώ, το mod5() είναι μια συνάρτηση που παίρνει έναν αριθμό x και επιστρέφει το υπόλοιπο όταν ο αριθμός x διαιρεθεί με το 5.

def mod5(x):
  return x % 5 

Και θα θέλαμε να χρησιμοποιήσουμε την παραπάνω λειτουργία ως κλειδί.

Τώρα, εκτελέστε το ακόλουθο κελί κώδικα.

nums = [25,13,6,17,9]
nums.sort(key = mod5)
print(nums)

# Output: [25, 6, 17, 13, 9]

Αφιερώστε ένα λεπτό για να αναλύσετε την έξοδο.

Παρατηρήστε πώς αντί για την κανονική ταξινόμηση, τώρα προσαρμόζετε την ταξινόμηση σύμφωνα με το κλειδί που είναι mod5.

  • Ο αριθμός που αφήνει το ελάχιστο υπόλοιπο όταν διαιρείται με το 5 έρχεται πρώτος τώρα.
  • Και ο αριθμός που αφήνει το μεγαλύτερο υπόλοιπο όταν διαιρείται με το 5 είναι το τελευταίο στοιχείο της ταξινομημένης λίστας.

Για να επαληθεύσετε ότι συμβαίνει αυτό, εκτελέστε το ακόλουθο απόσπασμα κώδικα.

nums = [25,13,6,17,9]

for num in nums:
  print(f"{num} leaves remainder {num%5} when divided by 5")

# Output
25 leaves remainder 0 when divided by 5
13 leaves remainder 3 when divided by 5
6 leaves remainder 1 when divided by 5
17 leaves remainder 2 when divided by 5
9 leaves remainder 4 when divided by 5

Το 5 διαιρεί ακριβώς το 25 και το υπόλοιπο είναι 0. Αυτό είναι λοιπόν το πρώτο στοιχείο στην ταξινομημένη λίστα. Το 6 αφήνει ένα υπόλοιπο 1, άρα είναι το δεύτερο στοιχείο και ούτω καθεξής. Το 9 αφήνει το υπόλοιπο 4 όταν διαιρείται με το 5 και είναι το τελευταίο στοιχείο στην ταξινομημένη λίστα.

Αντί να ορίσετε μια ξεχωριστή λειτουργία, μπορείτε επίσης να χρησιμοποιήσετε συναρτήσεις λάμδα. Στην Python, τα λάμδα είναι ανώνυμες συναρτήσεις μιας γραμμής. lambda args : έκφραση επιστρέφει την έκφραση που υπολογίζεται στα args.

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

nums = [25,13,6,17,9]
nums.sort(key = lambda x:x%5)
print(nums)

# Output: [25, 6, 17, 13, 9]

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

Πώς να ταξινομήσετε τη λίστα Python με αλφαβητική σειρά

Σε αυτήν την ενότητα, θα μάθετε να ταξινομείτε μια λίστα με χορδές—με παραδείγματα εμπνευσμένα από τον Χάρι Πότερ. ✨

Στο παράδειγμά μας, οι μαθητές είναι μια λίστα μαθητών στο Χόγκουαρτς. Και θα θέλαμε να τα ταξινομήσουμε με την αλφαβητική σειρά των ονομάτων τους.

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

students = ["Harry","Ron","Hermione","Draco","Cedric"]

Ας εκτυπώσουμε την ταξινομημένη λίστα για να επαληθεύσουμε το αποτέλεσμα της ταξινόμησης.

students.sort()
print(students)

# Output
['Cedric','Draco', 'Harry', 'Hermione', 'Ron']

Πώς να ταξινομήσετε τη λίστα Python με αντίστροφη αλφαβητική σειρά

Για να ταξινομήσετε τη λίστα με αντίστροφη αλφαβητική σειρά, ορίστε reverse = True, όπως φαίνεται στο παρακάτω απόσπασμα κώδικα.

students.sort(reverse = True)
print(students)

# Output
['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']

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

Τρόπος χρήσης της βασικής παραμέτρου Προσαρμογή ταξινόμησης

Σε αυτήν την ενότητα, ας προσαρμόσουμε την ταξινόμηση χρησιμοποιώντας την προαιρετική παράμετρο κλειδιού.

Εξετάστε την ακόλουθη λίστα, σπίτια.

houses = [
            {1:"Draco","house":"Slytherin"},
            {2:"Harry","house":"Gryffindor"},
            {3:"Cedric","house":"Hufflepuff"}
         ]

Εδώ, τα σπίτια είναι μια λίστα με λεξικά. Κάθε λεξικό περιέχει δύο ζεύγη κλειδιών-τιμών, το ένα δηλώνει τα ονόματα των μαθητών και το άλλο το σπίτι στο οποίο ανήκουν.

Τώρα, θα θέλαμε να ταξινομήσουμε αυτή τη λίστα τα σπίτια με την αλφαβητική σειρά των σπιτιών στα οποία ανήκουν.

Όπως ίσως έχετε μαντέψει μέχρι τώρα, θα πρέπει να ορίσουμε την βασική παράμετρο στο σπίτι των συγκεκριμένων μαθητών.

Για να ανακτήσετε το σπίτι κάθε μαθητή, μπορείτε να ορίσετε μια συνάρτηση returnHouse(), όπως φαίνεται παρακάτω.

def returnHouse(student):
  return student['house']

Αυτή η συνάρτηση επιστρέφει το σπίτι στο οποίο ανήκει ο συγκεκριμένος μαθητής.

Τώρα, μπορείτε να καλέσετε τη μέθοδο sort() στη λίστα σπιτιών, όπως φαίνεται.

houses.sort(key=returnHouse)

Στην παρακάτω έξοδο, παρατηρήστε πώς ταξινομείται η λίστα με βάση το σπίτι και όχι τα ονόματα των μαθητών. Γι’ αυτό έχουμε τα Gryffindor, Hufflepuff και Slytherin—με αλφαβητική σειρά.

print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

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

▶ Εκτελέστε το ακόλουθο κελί κώδικα για να το επιβεβαιώσετε.

houses.sort(key=lambda student:student["house"])
print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

Σε όλα τα παραδείγματα μέχρι στιγμής, έχετε χρησιμοποιήσει τη μέθοδο sort() σε μια λίστα. Και τώρα ξέρετε ότι τροποποιεί την αρχική λίστα.

Τι γίνεται αν θέλετε να διατηρήσετε την αρχική λίστα ως έχει, αλλά να αποκτήσετε ένα ταξινομημένο αντίγραφο της λίστας;

Λοιπόν, στην Python, μπορείτε να χρησιμοποιήσετε τη συνάρτηση sorted() για να το κάνετε αυτό.

Σύνταξη της συνάρτησης Python sorted().

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

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

<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)

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

  • Το είναι οποιοδήποτε έγκυρο αντικείμενο λίστας Python και είναι μια απαιτούμενη παράμετρος.
  • Το αντίστροφο και το κλειδί είναι προαιρετικές παράμετροι

Σημείωση: Σε αντίθεση με τη μέθοδο sort() που λειτουργεί μόνο σε λίστες, η συνάρτηση sorted() μπορεί να χρησιμοποιηθεί για την ταξινόμηση οποιουδήποτε επαναληπτικού Python, όπως λίστες, συμβολοσειρές και λεξικά.

Πώς να ταξινομήσετε τη λίστα Python χρησιμοποιώντας τη συνάρτηση sorted().

#1. Σε αυτό το παράδειγμα, το nums είναι μια λίστα αριθμών.

Μπορείτε να καλέσετε τη συνάρτηση sorted() με τα nums ως όρισμα. Και αντιστοιχίστε το στη λίστα sorted_nums1.

nums = [25,13,6,17,9]
sorted_nums1 = sorted(nums)
print(sorted_nums1)

# Output: [6, 9, 13, 17, 25]

Στην παραπάνω έξοδο, μπορείτε να δείτε ότι τα nums έχουν ταξινομηθεί με αύξουσα σειρά από προεπιλογή.

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

print(nums)
 # Output: [25, 13, 6, 17, 9]

#2. Τώρα, ορίστε την προαιρετική παράμετρο αντίστροφα σε True και λάβετε sorted_nums2.

Όπως φαίνεται στο κελί κώδικα παρακάτω, sorted_nums2 είναι μια νέα λίστα με τα στοιχεία ταξινομημένα με φθίνουσα σειρά.

sorted_nums2 = sorted(nums,reverse = True)
print(sorted_nums2)

# Output: [25, 17, 13, 9, 6]

#3. Σε αυτό το παράδειγμα, ας δουλέψουμε με μια λίστα συμβολοσειρών.

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

fruits = ['pears','strawberry','apple','pineapple','blueberry']
sorted_fr1 = sorted(fruits)
print(sorted_fr1)

# Output:
['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']

#4. Τώρα, ας προσαρμόσουμε την ταξινόμηση χρησιμοποιώντας την προαιρετική παράμετρο κλειδιού. Ρυθμίστε το κλειδί στο len. Αυτό θα ταξινομήσει τη λίστα με βάση το μήκος των συμβολοσειρών.

Σημείωση: Στην Python, η ενσωματωμένη συνάρτηση len() λαμβάνει οποιοδήποτε επαναληπτικό, όπως λίστες, συμβολοσειρά, πλειάδες και ούτω καθεξής. Και επιστρέφει το μήκος του επαναληπτικού.

Η συμβολοσειρά με το μικρότερο μήκος εμφανίζεται πρώτη στην ταξινομημένη λίστα και η μεγαλύτερη συμβολοσειρά εμφανίζεται στο τέλος της ταξινομημένης λίστας.

fruits = ['pear','strawberry','apple','pineapple','blueberry']
sorted_fr2 = sorted(fruits,key=len)
print(sorted_fr2)

# Output:
['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']

Στην παραπάνω έξοδο, το αχλάδι είναι η πιο μικρή χορδή και η φράουλα είναι η μεγαλύτερη.

Python sort() Method vs. sorted() Συνάρτηση

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

Python .sort() MethodPython sorted() FunctionΤαξινομεί τη λίστα στη θέση του—τροποποιεί την αρχική λίσταΕπιστρέφει μια νέα ταξινομημένη λίστα Λειτουργεί μόνο με λίστες Python Λειτουργεί με επαναληψίες Python όπως λίστες, συμβολοσειρές και άλλες συλλογέςΈχει επιστροφή τύπου NoneΕπιστρέφει ένα ταξινομημένο αντίγραφο του iter

Συνοψίζοντας 👩‍🏫

Ελπίζω να βρήκατε χρήσιμο αυτό το σεμινάριο με τις λίστες Python.

Ας συνοψίσουμε γρήγορα αυτά που καλύψαμε.

  • Χρησιμοποιήστε list.sort(reverse = True | False, key = ) με τις προαιρετικές παραμέτρους reverse και key για να ταξινομήσετε μια λίστα στη θέση της.
  • Χρησιμοποιήστε sorted(list, reverse = True | False, key = ) για να λάβετε ένα ταξινομημένο αντίγραφο της λίστας.

Τώρα που μάθατε πώς να ταξινομείτε λίστες Python, μάθετε για την κατανόηση λιστών στην Python. Ή θα μπορούσατε επίσης να μάθετε πώς να χειρίζεστε αρχεία ή να εργάζεστε με αρχεία JSON στην Python.

Μπορείτε να δοκιμάσετε τα παραδείγματα που δίνονται παραπάνω στον διαδικτυακό μεταγλωττιστή grtechpc.org Python.

  14 Καλύτερα Συντομευτικά URL για Μάρκετινγκ επωνυμίας