Cara Menghapus Elemen Duplikat dari Daftar Python
Daftar adalah struktur data dasar Python yang menyimpan koleksi terurut item seperti bilangan bulat, string, atau objek kustom. Ini adalah setara Python dengan array dalam bahasa lainnya.
Berikut adalah teknik yang teruji untuk menghapus elemen duplikat dari daftar sambil mempertahankan urutan dan keterbacaan.
- Hapus duplikat menggunakan set
- Hapus duplikat dengan daftar sementara
- Hapus duplikat menggunakan OrderedDict (atau dict.fromkeys)
- Hapus duplikat dengan loop for sederhana
- Hapus duplikat melalui list comprehension
- Hapus duplikat dengan NumPy's unique()
- Hapus duplikat menggunakan Pandas' unique()
- Hapus duplikat dengan enumerate() dan list comprehension
Hapus duplikat menggunakan set
Fungsi bawaan set() Python menghapus duplikat dengan mengembalikan hanya elemen unik. Konversi daftar ke set, lalu kembali ke daftar untuk mempertahankan format koleksi.
my_list = [1,1,2,3,2,2,4,5,6,2,1] my_final_list = set(my_list) print(list(my_final_list))
Output:
[1, 2, 3, 4, 5, 6]
Hapus duplikat menggunakan daftar sementara
Pendekatan ini membuat daftar kosong, mengulang daftar asli, dan menambahkan hanya item yang belum pernah dilihat sebelumnya.
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) Output:
List Before [1, 2, 3, 1, 2, 4, 5, 4, 6, 2] List After removing duplicates [1, 2, 3, 4, 5, 6]
Hapus duplikat menggunakan OrderedDict (atau dict.fromkeys)
Untuk Python 3.5+, dict biasa mempertahankan urutan penyisipan, jadi dict.fromkeys() dapat digunakan untuk menjaga nilai unik dalam urutan.
my_list = ['a','x','a','y','a','b','b','c'] my_final_list = dict.fromkeys(my_list) print(list(my_final_list))
Output:
['a', 'x', 'y', 'b', 'c']
Hapus duplikat dengan loop for sederhana
Telusuri daftar, tambahkan item ke daftar baru hanya jika belum muncul sebelumnya.
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(myFinallist)
Output:
[1, 2, 3, 4, 5, 6]
Hapus duplikat melalui list comprehension
List comprehensions menawarkan sintaks ringkas sambil mempertahankan keterbacaan.
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)
Output:
[1, 2, 3, 4, 5, 6]
Hapus duplikat dengan NumPy's unique()
Fungsi unique() NumPy mengembalikan elemen unik yang diurutkan dari array.
import numpy as np my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = np.unique(my_list).tolist() print(myFinalList)
Output:
[1, 2, 3, 4, 5, 6]
Hapus duplikat menggunakan Pandas' unique()
Secara serupa, Pandas menawarkan metode unique() ringan yang bekerja pada objek seperti daftar.
import pandas as pd my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = pd.unique(my_list).tolist() print(myFinalList)
Output:
[1, 2, 3, 4, 5, 6]
Hapus duplikat dengan enumerate() dan list comprehension
Menggabungkan enumerate() dengan list comprehension memungkinkan penghapusan duplikat sambil mempertahankan kemunculan pertama dari setiap elemen.
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(my_finallist)
Output:
[1, 2, 3, 4, 5, 6]
Ringkasan
- Menggunakan
set() adalah cara tercepat untuk menghapus duplikat, meskipun tidak mempertahankan urutan. - Daftar sementara atau loop for mempertahankan urutan asli tetapi sedikit lebih kurang ringkas.
- Ordered dictionary atau
dict.fromkeys() mempertahankan urutan dan sangat efisien. - NumPy dan Pandas menyediakan solusi satu baris untuk alur kerja numerik atau berbasis DataFrame.
- List comprehensions dengan
enumerate() menawarkan gaya fungsional yang mudah dibaca dan mempertahankan urutan.