Πώς να αφαιρέσετε διπλότυπα από μια λίστα Python
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) Χρήση της Προσωρινής Λίστας
Για να αφαιρέσετε διπλότυπα από ένα δεδομένο list
, μπορείτε να χρησιμοποιήσετε μια κενή προσωρινή λίστα. Για αυτό πρώτα, θα πρέπει να πραγματοποιήσετε αναζήτηση στη λίστα με διπλότυπα και να προσθέσετε τα μοναδικά στοιχεία στην προσωρινή λίστα. 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.fromkey()
μέθοδο, πρέπει να εισαγάγετε 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) Χρησιμοποιήστε τη λίστα σας με διπλότυπα μέσα στη μοναδική μέθοδο όπως φαίνεται παρακάτω. Η έξοδος μετατρέπεται ξανά σε μορφή λίστας χρησιμοποιώντας 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 επιστρέφει ένα αντικείμενο με μετρητή σε κάθε στοιχείο της λίστας. Για παράδειγμα (0,1), (1,2) κ.λπ. Εδώ η πρώτη τιμή είναι ο δείκτης και η δεύτερη τιμή είναι το στοιχείο της λίστας. W
Κάθε στοιχείο ελέγχεται εάν υπάρχει στη λίστα, και εάν υπάρχει, αφαιρείται από τη λίστα.
Παράδειγμα
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]
Περίληψη
- Για να αφαιρέσετε τα διπλότυπα από μια λίστα, μπορείτε να χρησιμοποιήσετε την ενσωματωμένη λειτουργία
set()
. Η ειδικότητα τουset()
μέθοδος είναι ότι επιστρέφει διαφορετικά στοιχεία. - Μπορείτε να αφαιρέσετε διπλότυπα από τη δεδομένη λίστα με εισαγωγή
OrderedDictfrom
συλλογές. Είναι διαθέσιμο από το python2.7 και μετά.OrderedDictdict
φροντίζει να σας επιστρέψει τα διακριτά στοιχεία με τη σειρά που υπάρχει το κλειδί. - Μπορείτε να χρησιμοποιήσετε έναν βρόχο for που θα διασχίσουμε τη λίστα των στοιχείων για να αφαιρέσουμε τα διπλότυπα.
- Η μέθοδος
unique()
από τη μονάδα Numpy μπορεί να μας βοηθήσει να αφαιρέσουμε το αντίγραφο από τη λίστα που δίνεται. - Η μονάδα Pandas έχει ένα
unique()
μέθοδο που θα μας δώσει τα μοναδικά στοιχεία από τη λίστα που δίνεται. - Ο συνδυασμός κατανόησης λίστας και απαρίθμησης χρησιμοποιείται για την αφαίρεση των διπλότυπων στοιχείων από τη λίστα. Το Enumerate επιστρέφει ένα αντικείμενο με μετρητή σε κάθε στοιχείο της λίστας.