Bagaimanakah Saya Boleh Menyahduplikasi Senarai Senarai Dengan Cekap Semasa Mengekalkan Pesanan?

Barbara Streisand
Lepaskan: 2024-11-23 15:24:25
asal
567 orang telah melayarinya

How Can I Efficiently Deduplicate a List of Lists While Maintaining Order?

Mengalih Keluar Pendua daripada Senarai Senarai Dengan Cekap

Memandangkan senarai senarai, matlamatnya adalah untuk menghapuskan unsur pendua sambil mengekalkan ketenteraman. Walaupun menukar senarai kepada tupel kepada set leverage adalah mudah, ia tidak cekap.

Menggunakan itertools.groupby()

itertools menawarkan penyelesaian yang luar biasa:

import itertools

k.sort()
list(k for k,_ in itertools.groupby(k))
Salin selepas log masuk

Pendekatan ini cemerlang dengan:

  • Mengisih senarai untuk menjajarkan pendua.
  • Menghimpunkan senarai berdasarkan elemen, dengan setiap kumpulan diwakili oleh kejadian pertamanya.
  • Menukar kekunci kumpulan (pendua dialih keluar) kembali kepada senarai.

Analisis Penanda Aras

Penanda aras yang meluas mendedahkan bahawa "berkumpulan" secara amnya mengatasi kaedah lain untuk senarai input yang besar. Walau bagaimanapun, untuk senarai kecil dengan beberapa pendua, pendekatan "gelung masuk" mungkin lebih pantas sedikit.

Mengoptimumkan untuk Aplikasi Tertentu

Apabila prestasi diutamakan, pertimbangkan:

  • Analisis Input Heuristik: Mengesan ciri input untuk membimbing algoritma pemilihan.
  • Struktur Data Alternatif: Menilai sama ada set tupel akan menjadi perwakilan yang lebih sesuai untuk data.
  • Pemodelan Kebarangkalian: Menganalisis pengagihan pendua untuk mengoptimumkan ukuran prestasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahduplikasi Senarai Senarai Dengan Cekap Semasa Mengekalkan Pesanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan