Python Unique List - Πώς να αποκτήσετε όλες τις μοναδικές τιμές σε μια λίστα ή μια σειρά

Ας υποθέσουμε ότι έχετε μια λίστα που περιέχει διπλούς αριθμούς:

numbers = [1, 1, 2, 3, 3, 4] 

Αλλά θέλετε μια λίστα με μοναδικούς αριθμούς.

unique_numbers = [1, 2, 3, 4] 

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

Επιλογή 1 - Χρήση ενός σετ για τη λήψη μοναδικών στοιχείων

Χρησιμοποιώντας setέναν τρόπο για να το κάνετε. Ένα σετ είναι χρήσιμο επειδή περιέχει μοναδικά στοιχεία.

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

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

numbers = [1, 2, 2, 3, 3, 4, 5] def get_unique_numbers(numbers): list_of_unique_numbers = [] unique_numbers = set(numbers) for number in unique_numbers: list_of_unique_numbers.append(number) return list_of_unique_numbers print(get_unique_numbers(numbers)) # result: [1, 2, 3, 4, 5] 

Ας ρίξουμε μια πιο προσεκτική ματιά στο τι συμβαίνει. Είμαι δοθεί μια λίστα με τους αριθμούς, numbers. Έχω περάσει αυτή τη λίστα στη λειτουργία get_unique_numbers.

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

unique_numbers = set(numbers) 

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

for number in unique_numbers: list_of_unique_numbers.append(number) 

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

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

Μικρότερη προσέγγιση με το σετ

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

numbers = [1, 2, 2, 3, 3, 4, 5] unique_numbers = list(set(numbers)) print(unique_numbers) # Result: [1, 2, 3, 4, 5] 

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

unique_numbers = list(set(numbers)) 

Είναι χρήσιμο να σκέφτεστε "μέσα προς τα έξω" κατά την ανάγνωση του παραπάνω κώδικα. Το εσωτερικό κωδικό παίρνει αξιολογούνται πρώτα: set(numbers). Στη συνέχεια, η εξόχως απόκεντρες κωδικός αξιολογείται: list(set(numbers)).

Επιλογή 2 - Χρήση επανάληψης για τον προσδιορισμό μοναδικών τιμών

Η επανάληψη είναι μια άλλη προσέγγιση που πρέπει να ληφθεί υπόψη.

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

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

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number in unique: continue else: unique.append(number) return unique print(get_unique_numbers(numbers)) # Result: [20, 30, 40] 

Να τι συμβαίνει σε κάθε βήμα. Κατ 'αρχάς, είμαι δοθεί μια λίστα με τους αριθμούς, numbers. Έχω περάσει αυτή τη λίστα σε λειτουργία μου, get_unique_numbers.

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

Χρησιμοποιώ ένα για βρόχο για να επαναλάβω κάθε αριθμό στη numbersλίστα.

 for number in numbers: if number in unique: continue else: unique.append(number) 

Ο υπό όρους μέσα στον βρόχο ελέγχει για να δει αν ο αριθμός της τρέχουσας επανάληψης βρίσκεται στη uniqueλίστα. Εάν ναι, ο βρόχος συνεχίζεται στην επόμενη επανάληψη. Διαφορετικά, ο αριθμός προστίθεται σε αυτήν τη λίστα.

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

Μια πιο σύντομη προσέγγιση με την επανάληψη

Υπάρχει ένας άλλος τρόπος για να γράψετε τη λειτουργία σε λιγότερες γραμμές.

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number not in unique: unique.append(number) return unique #Result: [20, 30, 40] 

Η διαφορά είναι υπό όρους. Αυτή τη φορά έχει ρυθμιστεί να διαβάζει έτσι: αν ο αριθμός δεν είναι μέσα unique, προσθέστε τον.

if number not in unique: unique.append(number) 

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

Το αποτέλεσμα είναι το ίδιο. Ωστόσο, μερικές φορές είναι πιο δύσκολο να σκεφτείτε και να διαβάσετε κώδικα όταν το boolean είναι αρνητικό.

Υπάρχουν άλλοι τρόποι για να βρείτε μοναδικές τιμές σε μια λίστα Python. Αλλά πιθανότατα θα βρεθείτε σε μια από τις προσεγγίσεις που καλύπτονται σε αυτό το άρθρο.

Γράφω για την εκμάθηση του προγράμματος και τους καλύτερους τρόπους για να το κάνω στο amymhaddad.com Ακολουθήστε με στο Twitter: @amymhaddad.