Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengeluarkan Pendua dengan Cekap dari Senarai Python Semasa Mengekalkan Pesanan?

Bagaimana untuk Mengeluarkan Pendua dengan Cekap dari Senarai Python Semasa Mengekalkan Pesanan?

DDD
DDDasal
2024-12-20 12:42:19630semak imbas

How to Efficiently Remove Duplicates from a Python List While Maintaining Order?

Mengalih keluar Pendua dalam Senarai

Dalam Python, menyemak pendua dalam senarai dan mengembalikan senarai baharu tanpanya adalah tugas biasa. Terdapat beberapa pendekatan untuk mencapainya.

Menggunakan Set

Set ialah koleksi objek yang berbeza tidak tertib. Mereka menyediakan cara yang cekap untuk mengalih keluar pendua. Untuk membuat set daripada senarai, hantarkan sahaja kepada fungsi set(). Untuk menukarnya kembali kepada senarai, gunakan fungsi list(). Kaedah ini, bagaimanapun, tidak mengekalkan susunan asal unsur-unsur.

t = [1, 2, 3, 1, 2, 3, 5, 6, 7, 8]
list(set(t))  # [1, 2, 3, 5, 6, 7, 8]

Mengekalkan Ketenteraman

Jika mengekalkan susunan asal adalah penting, koleksi.OrderedDict modul boleh digunakan. OrderedDict mengekalkan susunan sisipan item. Tukar senarai kepada OrderedDict dan kemudian kembali ke senarai untuk mengekalkan susunan.

from collections import OrderedDict
list(OrderedDict.fromkeys(t))  # [1, 2, 3, 5, 6, 7, 8]

Menggunakan Kamus dalam Python 3.7

Dalam Python 3.7 dan lebih baharu, kamus biasa juga mengekalkan susunan sisipan. Oleh itu, anda boleh menggunakan pendekatan berikut:

list(dict.fromkeys(t))  # [1, 2, 3, 5, 6, 7, 8]

Pertimbangan

Perhatikan bahawa semua kaedah ini memerlukan item dalam senarai boleh cincang (iaitu, tidak boleh ubah) . Jika item tidak boleh dicincang (cth., senarai), pendekatan yang lebih perlahan melibatkan perbandingan gelung bersarang diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Pendua dengan Cekap dari Senarai Python Semasa Mengekalkan Pesanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn