Πώς να αφαιρέσετε διπλότυπα από μια λίστα 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 επιστρέφει ένα αντικείμενο με μετρητή σε κάθε στοιχείο της λίστας.