Πώς να φιλτράρετε τη λίστα στην Python με τον σωστό τρόπο για να αξιοποιήσετε περισσότερα από τα δεδομένα σας

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

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

Ακολουθούν παραδείγματα λιστών στην Python:

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

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

Γιατί είναι σημαντικό το φιλτράρισμα των λιστών

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

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

Μερικές πραγματικές εφαρμογές λιστών φιλτραρίσματος περιλαμβάνουν:

  • Επικύρωση δεδομένων – Όταν εργάζεστε με μια λίστα, ίσως θέλετε να εργάζεστε μόνο με δεδομένα που πληρούν ένα δεδομένο κριτήρια. Για παράδειγμα, σε μια λίστα χρηστών, μπορεί να σας ενδιαφέρουν χρήστες με όνομα και επίθετο. Το φιλτράρισμα μπορεί να σας επιτρέψει να επαληθεύσετε και να επικυρώσετε τα δεδομένα στη λίστα πριν την επεξεργασία τους. Με αυτόν τον τρόπο, αποφεύγετε να εργάζεστε με δεδομένα που δεν ανταποκρίνονται στις απαιτήσεις σας.
  • Καθαρισμός δεδομένων – Δεδομένου ότι οι λίστες μπορούν να αποθηκεύουν διάφορους τύπους δεδομένων, δεν είναι σπάνιο να διαπιστώσετε ότι οι λίστες περιέχουν ανεπιθύμητα δεδομένα που δεν σας ενδιαφέρουν. Για παράδειγμα, σε μια λίστα που περιέχει ονόματα, ενδέχεται να μην σας ενδιαφέρουν αριθμητικές τιμές σε η λίστα. Μέσω φιλτραρίσματος, μπορείτε να αφαιρέσετε τα ανεπιθύμητα δεδομένα.
  • Ανάλυση δεδομένων – Το φιλτράρισμα δεδομένων είναι ιδιαίτερα χρήσιμο στην ανάλυση δεδομένων, καθώς σας επιτρέπει να εστιάσετε σε συγκεκριμένα υποσύνολα δεδομένων, γεγονός που σας επιτρέπει να αναγνωρίζετε εύκολα μοτίβα και τάσεις. Για παράδειγμα, σε μια λίστα μαθητών, μπορείτε να φιλτράρετε μαθητές και γυναίκες και να χρησιμοποιήσετε το αποτέλεσμα στην ανάλυση δεδομένων. Μπορείτε ακόμη να φιλτράρετε ανάλογα με την ηλικία, την τοποθεσία και τον βαθμό. Αυτό σας επιτρέπει να εξάγετε πιο χρήσιμα συμπεράσματα από συγκεκριμένα υποσύνολα δεδομένων σε μια λίστα
  Γιατί η επιχείρησή σας πρέπει να χρησιμοποιεί εμπιστευτική πληροφορική

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

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

Χρήση της συνάρτησης filter().

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

Ένας Iterable στην Python είναι ένα αντικείμενο που μπορεί να κυκλοφορήσει μέσω των στοιχείων του ένα προς ένα. Η επανάληψη μέσω ενός επαναληπτικού επιστρέφει τα στοιχεία στον επαναληπτικό ένα κάθε φορά.

Η σύνταξη για τη συνάρτηση φίλτρου είναι η εξής:

filter(function, iterable)

συνάρτηση – μια συνάρτηση Python που περιέχει τη συνθήκη φιλτραρίσματος

iterable – το iterable που πρόκειται να φιλτραριστεί. Σε αυτήν την περίπτωση, θα χρησιμοποιήσουμε μια λίστα.

Η συνάρτηση filter() παίρνει τη συνάρτηση που πέρασε και την εφαρμόζει σε κάθε στοιχείο στον περασμένο επαναληπτικό, δοκιμάζοντας τη συνθήκη φιλτραρίσματος έναντι του στοιχείου. Εάν το στοιχείο ικανοποιεί τη συνθήκη, δηλαδή επιστρέφει το boolean true, το οποίο θα επιλεγεί από τη συνάρτηση filter(). Σε περίπτωση που δεν ικανοποιεί την προϋπόθεση, το στοιχείο δεν επιλέγεται.

Η συνάρτηση filter() επιστρέφει ένα iterable με στοιχεία που πέρασαν τη συνθήκη φιλτραρίσματος. Μπορείτε να δημιουργήσετε μια νέα λίστα που περιέχει στοιχεία που πέρασαν τη συνθήκη φιλτραρίσματος χρησιμοποιώντας τη συνάρτηση list().

Για να δείτε τη συνάρτηση filter() σε δράση, εξετάστε την παρακάτω λίστα, η οποία φιλτράρεται για να επιλέξετε αριθμούς που είναι μικρότεροι από 50:

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

Ο παραπάνω κώδικας εκτυπώνει το ακόλουθο αποτέλεσμα:

[15, 46, 24, 37]

Χρησιμοποιώντας έναν βρόχο for

Στην Python, ένας βρόχος for είναι μια δήλωση ροής ελέγχου που χρησιμοποιείται για την επανάληψη σε διαδοχικές δομές δεδομένων όπως λίστα, πλειάδες, συμβολοσειρές/και πίνακες. Ένας βρόχος for εκτελεί επανειλημμένα ένα μπλοκ κώδικα για κάθε στοιχείο σε μια ακολουθία.

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

Η γενική σύνταξη για έναν βρόχο for είναι η εξής:

for item in iterable:
    # Block of code to be executed for each item in the iterabele

στοιχείο – μια μεταβλητή που αντιπροσωπεύει το τρέχον αντικείμενο που υποβάλλεται σε επεξεργασία σε μια επανάληψη του βρόχου

iterable – η ακολουθία πάνω από την οποία επαναλαμβάνεται ο βρόχος for. Σε αυτή την περίπτωση, μια λίστα

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

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

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

numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

Ο παραπάνω κώδικας εκτυπώνει το ακόλουθο αποτέλεσμα:

[15, 46, 24, 37]

Χρησιμοποιώντας άλλη λίστα

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

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

vowels = ['a', 'e', 'i', 'o', 'u']

Στη λίστα που ονομάζεται γράμματα παραπάνω, μπορούμε να προσδιορίσουμε ποια στοιχεία στη λίστα δεν είναι φωνήεντα ελέγχοντας εάν το στοιχείο εμφανίζεται στη λίστα φωνηέντων ή όχι. Εάν ένα στοιχείο δεν εμφανίζεται στη λίστα φωνηέντων, τότε δεν είναι φωνήεν.

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

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

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

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Χρήση της κατανόησης λίστας

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

  Πώς να κάνετε εναλλαγή του Outlook μεταξύ λειτουργίας αφής και ποντικιού

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

Η σύνταξη για την κατανόηση της λίστας είναι η εξής:

new_list = [expression for element in iterable if condition]

new_list – μια νέα λίστα που περιέχει στοιχεία που προστέθηκαν από την κατανόηση της λίστας

έκφραση – μια πράξη που θα εφαρμοστεί σε κάθε στοιχείο του iterable

στοιχείο – όνομα μεταβλητής που αντιπροσωπεύει το τρέχον ενεργό στοιχείο στον επαναληπτικό

iterable – επαναλαμβανόμενο από το οποίο θα επιλεγούν τα στοιχεία.

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

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

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

Η έξοδος του παραπάνω κώδικα φαίνεται παρακάτω:

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Η έξοδος είναι παρόμοια με το προηγούμενο παράδειγμα, το οποίο χρησιμοποιούσε έναν βρόχο for για να φιλτράρει μια λίστα χρησιμοποιώντας μια άλλη λίστα. Ωστόσο, χρησιμοποιεί λιγότερες γραμμές κώδικα για να επιτύχει το ίδιο αποτέλεσμα.

συμπέρασμα

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

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

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