Untuk mengalih keluar elemen pendua dari senarai di Python, anda boleh menggunakan beberapa kaedah. Satu pendekatan yang biasa dan mudah adalah untuk menukar senarai ke set dan kemudian kembali ke senarai. Inilah cara anda boleh melakukannya:
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = list(set(original_list)) print(deduplicated_list) # Output: [1, 2, 3, 4, 5]</code>
Walau bagaimanapun, kaedah ini tidak mengekalkan urutan elemen asal. Jika pemeliharaan pesanan tidak menjadi kebimbangan, ini adalah kaedah yang mudah dan berkesan.
Kaedah yang paling berkesan untuk menghapuskan pendua dari senarai dalam Python, dari segi kerumitan masa, menggunakan set. Set di Python mempunyai kerumitan masa purata O (1) untuk menambah dan memeriksa keahlian, menjadikannya sangat efisien untuk tugas deduplikasi. Kaedah yang diterangkan di atas menggunakan set()
dan list()
adalah seperti berikut:
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = list(set(original_list))</code>
Pendekatan ini adalah cekap tetapi tidak memelihara susunan elemen. Jika memelihara pesanan adalah penting, pendekatan yang berbeza perlu digunakan, yang mungkin kurang efisien tetapi masih cukup cepat.
Ya, anda boleh memelihara urutan elemen semasa mengeluarkan pendua dari senarai di Python. Salah satu cara untuk mencapai matlamat ini adalah dengan menggunakan pemahaman senarai dengan satu set untuk menjejaki elemen yang dilihat:
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] seen = set() deduplicated_list = [x for x in original_list if not (x in seen or seen.add(x))] print(deduplicated_list) # Output: [1, 2, 3, 4, 5]</code>
Kaedah ini melangkah melalui senarai sekali, memeriksa dan menambah unsur -unsur ke set seen
. Sekiranya elemen belum dilihat sebelum ini, ia termasuk dalam senarai baru, memastikan perintah asal dikekalkan.
Terdapat beberapa pendekatan untuk deduplikasi senarai di Python, masing-masing dengan perdagangan sendiri dari segi kecekapan, pemeliharaan pesanan, dan kebolehbacaan. Berikut adalah beberapa kaedah biasa:
Menggunakan set (tiada pemeliharaan pesanan):
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = list(set(original_list))</code>
Perdagangan: Sangat cekap dengan kerumitan masa O (n), tetapi tidak memelihara urutan elemen asal.
Senarai pemahaman dengan set (pesanan dipelihara):
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] seen = set() deduplicated_list = [x for x in original_list if not (x in seen or seen.add(x))]</code>
Perdagangan: Memelihara susunan unsur-unsur dan masih agak efisien dengan kerumitan masa O (n), tetapi mungkin kurang dibaca dan sedikit kurang efisien daripada kaedah yang ditetapkan.
Menggunakan dict.fromkeys()
(pesanan yang dipelihara dalam Python 3.7):
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = list(dict.fromkeys(original_list))</code>
Perdagangan: Memelihara perintah di Python 3.7 dan kemudian disebabkan oleh pengenalan kamus yang diperintahkan. Ia cekap dan ringkas, tetapi pemeliharaan pesanan hanya dijamin dalam versi Python yang lebih baru.
Menggunakan gelung (pesanan dipelihara):
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = [] for item in original_list: if item not in deduplicated_list: deduplicated_list.append(item)</code>
Perdagangan: Memelihara pesanan dan mudah difahami tetapi boleh kurang cekap daripada kaedah lain, terutamanya untuk senarai besar, disebabkan oleh ujian keahlian yang berulang.
Setiap kaedah mempunyai kes penggunaannya bergantung kepada sama ada anda mengutamakan kecekapan, pemeliharaan pesanan, atau kebolehbacaan kod.
Atas ialah kandungan terperinci Bagaimana anda membuang elemen pendua dari senarai di Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!