Πώς να αφαιρέσετε διπλότυπα από μια λίστα Python
⚡ Έξυπνη Σύνοψη
Αφαίρεση διπλότυπων από ένα Python Η δημιουργία λίστας μπορεί να γίνει με διάφορες ενσωματωμένες προσεγγίσεις, όπως οι set(), dict.fromkeys(), οι βρόχοι, οι κατανοήσεις λίστας και οι μέθοδοι βιβλιοθήκης από τις NumPy και Pandas, με κάθε μία να εξισορροπεί τη διατήρηση της σειράς με την ταχύτητα.
Python αφαιρέστε τα διπλότυπα από μια λίστα
Μια λίστα είναι ένα κοντέινερ που περιέχει διαφορετικά Python αντικείμενα, τα οποία θα μπορούσαν να είναι ακέραιοι, λέξεις, τιμές κ.λπ. Είναι το ισοδύναμο ενός πίνακα σε άλλες γλώσσες προγραμματισμού.
Εδώ λοιπόν θα δούμε διαφορετικούς τρόπους με τους οποίους μπορούμε να αφαιρέσουμε διπλότυπα από μια δεδομένη λίστα Python.
Μέθοδος 1) Καταργήστε τα διπλότυπα από τη λίστα χρησιμοποιώντας το Set
Για να αφαιρέσετε τα διπλότυπα από μια λίστα, μπορείτε να χρησιμοποιήσετε την ενσωματωμένη συνάρτηση set(). Η ιδιαιτερότητα της μεθόδου set() είναι ότι επιστρέφει διακριτά στοιχεία.
Έχουμε μια λίστα: [1,1,2,3,2,2,4,5,6,2,1]. Η λίστα έχει πολλά διπλότυπα τα οποία πρέπει να αφαιρέσουμε και να λάβουμε πίσω μόνο τα διακριτά στοιχεία. Η λίστα δίνεται στην ενσωματωμένη συνάρτηση set(). Later Η τελική λίστα εμφανίζεται χρησιμοποιώντας την ενσωματωμένη συνάρτηση list().
Η έξοδος που λαμβάνουμε είναι διακριτά στοιχεία όπου όλα τα διπλότυπα στοιχεία εξαλείφονται.
Παράδειγμα
my_list = [1,1,2,3,2,2,4,5,6,2,1]
my_final_list = set(my_list)
print(list(my_final_list))
Παραγωγή:
[1, 2, 3, 4, 5, 6]
Μέθοδος 2) Χρήση της Προσωρινής Λίστας
Για να αφαιρέσετε διπλότυπα από μια δεδομένη λίστα, μπορείτε να χρησιμοποιήσετε μια κενή προσωρινή λίστα. Για αυτό, θα πρέπει πρώτα να κάνετε επανάληψη στη λίστα που περιέχει διπλότυπα και να προσθέσετε τα μοναδικά στοιχεία στην προσωρινή λίστα. Later η προσωρινή λίστα εκχωρείται στην κύρια λίστα.
Παράδειγμα
Ακολουθεί ένα λειτουργικό παράδειγμα χρησιμοποιώντας μια προσωρινή λίστα.
my_list = [1, 2, 3, 1, 2, 4, 5, 4 ,6, 2] print("List Before ", my_list) temp_list = [] for i in my_list: if i not in temp_list: temp_list.append(i) my_list = temp_list print("List After removing duplicates ", my_list)
Παραγωγή:
List Before [1, 2, 3, 1, 2, 4, 5, 4, 6, 2] List After removing duplicates [1, 2, 3, 4, 5, 6]
Μέθοδος 3) Χρήση Dict
Μπορούμε να αφαιρέσουμε διπλότυπα από τη δεδομένη λίστα εισάγοντας το OrderedDict από συλλογές. Είναι διαθέσιμο από την έκδοση python2.7 και μετά. Το OrderedDict φροντίζει να σας επιστρέψει τα διακριτά στοιχεία με τη σειρά που υπάρχει το κλειδί.
Ας χρησιμοποιήσουμε μια λίστα και ας χρησιμοποιήσουμε τη μέθοδο fromkeys() που είναι διαθέσιμη στο OrderedDict για να λάβουμε τα μοναδικά στοιχεία από τη λίστα.
Για να χρησιμοποιήσετε τη μέθοδο OrderedDict.fromkeys(), πρέπει να εισαγάγετε το OrderedDict από συλλογές, όπως φαίνεται παρακάτω:
from collections import OrderedDict
Ακολουθεί ένα παράδειγμα για την αφαίρεση διπλότυπων χρησιμοποιώντας τη μέθοδο OrderedDict.fromkeys().
Παράδειγμα
from collections import OrderedDict my_list = ['a','x','a','y','a','b','b','c'] my_final_list = OrderedDict.fromkeys(my_list) print(list(my_final_list))
Παραγωγή:
['a', 'x', 'y', 'b', 'c']
Από Python Από την έκδοση 3.5+ και μετά, μπορούμε να χρησιμοποιήσουμε την κανονική συνάρτηση dict.fromkeys() για να λάβουμε τα διακριτά στοιχεία από τη λίστα. Η μέθοδος dict.fromkeys() επιστρέφει μοναδικά κλειδιά και βοηθά στην απαλλαγή από τις διπλότυπες τιμές.
Ένα παράδειγμα που δείχνει τη λειτουργία της συνάρτησης dict.fromkeys() σε μια λίστα για να δώσει τα μοναδικά στοιχεία έχει ως εξής:
Παράδειγμα
my_list = ['a','x','a','y','a','b','b','c'] my_final_list = dict.fromkeys(my_list) print(list(my_final_list))
Παραγωγή:
['a', 'x', 'y', 'b', 'c']
Μέθοδος 4) Χρήση for-loop
Χρησιμοποιώντας για βρόχο, θα διασχίσουμε τη λίστα των στοιχείων για να αφαιρέσουμε τα διπλότυπα.
Αρχικά, αρχικοποιήστε τον πίνακα σε κενό, π.χ. myFinallist = []. Μέσα στον βρόχο for, προσθέστε έναν έλεγχο για το αν τα στοιχεία της λίστας υπάρχουν στον πίνακα myFinallist. Εάν τα στοιχεία δεν υπάρχουν, προσθέστε το στοιχείο στον πίνακα myFinallist χρησιμοποιώντας τη μέθοδο append().
Έτσι, κάθε φορά που συναντάται το διπλότυπο στοιχείο, θα υπάρχει ήδη στον πίνακα myFinallist και δεν θα εισάγεται. Ας ελέγξουμε τώρα το ίδιο στο παρακάτω παράδειγμα:
Παράδειγμα
my_list = [1,2,2,3,1,4,5,1,2,6] myFinallist = [] for i in my_list: if i not in myFinallist: myFinallist.append(i) print(list(myFinallist))
Παραγωγή:
[1, 2, 3, 4, 5, 6]
Μέθοδος 5) Χρήση της κατανόησης λίστας
Κατανοήσεις λίστας είναι Python συναρτήσεις που χρησιμοποιούνται για τη δημιουργία νέων ακολουθιών (όπως λίστες, λεξικά κ.λπ.) χρησιμοποιώντας ακολουθίες που έχουν ήδη δημιουργηθεί. Αυτό σας βοηθά να μειώσετε τους μεγαλύτερους βρόχους και να κάνετε τον κώδικά σας ευκολότερο στην ανάγνωση και τη συντήρηση.
Ας χρησιμοποιήσουμε την κατανόηση λίστας για να αφαιρέσουμε τα διπλότυπα από τη λίστα που δίνεται.
Παράδειγμα
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [] [my_finallist.append(n) for n in my_list if n not in my_finallist] print(my_finallist)
Παραγωγή:
[1, 2, 3, 4, 5, 6]
Μέθοδος 6) Χρήση της μεθόδου NumPy unique()
Η μέθοδος unique() από την ενότητα NumPy μπορεί να μας βοηθήσει να αφαιρέσουμε διπλότυπα από τη λίστα που δίνεται.
Για να εργαστείτε με το NumPy, εισαγάγετε πρώτα τη λειτουργική μονάδα numpy:
Βήμα 1) Εισαγωγή ενότητας NumPy
import numpy as np
Βήμα 2) Χρησιμοποιήστε τη λίστα σας με διπλότυπα μέσα στη μέθοδο unique(). Η έξοδος μετατρέπεται ξανά σε λίστα χρησιμοποιώντας τη μέθοδο tolist().
myFinalList = np.unique(my_list).tolist()
Βήμα 3) Τέλος, εκτυπώστε τη λίστα:
print(myFinalList)
Ο τελικός κωδικός με έξοδο είναι ο εξής:
import numpy as np my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = np.unique(my_list).tolist() print(myFinalList)
Παραγωγή:
[1, 2, 3, 4, 5, 6]
Μέθοδος 7) Χρήση μεθόδων Pandas
Η ενότητα Pandas έχει μια μέθοδο unique() που θα μας δώσει τα μοναδικά στοιχεία από τη λίστα που δίνεται.
Για να εργαστείτε με την ενότητα Pandas:
Βήμα 1) Εισαγωγή μονάδας Pandas
import pandas as pd
Βήμα 2) Χρησιμοποιήστε τη λίστα σας με διπλότυπα μέσα στη μέθοδο unique():
myFinalList = pd.unique(my_list).tolist()
Βήμα 3) Εκτυπώστε τη λίστα:
print(myFinalList)
Ο τελικός κωδικός με έξοδο είναι ο εξής:
import pandas as pd my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = pd.unique(my_list).tolist() print(myFinalList)
Παραγωγή:
[1, 2, 3, 4, 5, 6]
Μέθοδος 8) Χρησιμοποιώντας την enumerate() και την κατανόηση λίστας
Εδώ χρησιμοποιούμε τον συνδυασμό κατανόησης λίστας και enumerate() για να αφαιρέσουμε τα διπλότυπα στοιχεία. Η Enumerate επιστρέφει ένα αντικείμενο με έναν μετρητή για κάθε στοιχείο της λίστας. Για παράδειγμα (0,1), (1,2) κ.λπ. Εδώ η πρώτη τιμή είναι ο δείκτης και η δεύτερη τιμή είναι το στοιχείο της λίστας.
Κάθε στοιχείο ελέγχεται για να διαπιστωθεί εάν υπάρχει στη λίστα και, εάν υπάρχει, αφαιρείται από τη λίστα.
Παράδειγμα
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [i for j, i in enumerate(my_list) if i not in my_list[:j]] print(list(my_finallist))
Παραγωγή:
[1, 2, 3, 4, 5, 6]

