Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Kami Boleh Mengeluarkan Pendua Berturut-turut dengan Cekap daripada Senarai Semasa Memelihara Elemen Unik dalam Python?

Bagaimanakah Kami Boleh Mengeluarkan Pendua Berturut-turut dengan Cekap daripada Senarai Semasa Memelihara Elemen Unik dalam Python?

DDD
Lepaskan: 2024-12-11 19:12:12
asal
122 orang telah melayarinya

How Can We Efficiently Remove Consecutive Duplicates from a List While Preserving Unique Elements in Python?

Menghapuskan Pendua Berturut-turut dan Mengekalkan Elemen Berbeza

Apabila bekerja dengan senarai, selalunya perlu menghapuskan elemen pendua berturut-turut. Timbul persoalan: bagaimanakah kita boleh mengalih keluar elemen sedemikian dengan cekap sambil mengekalkan elemen yang berbeza?

Satu pendekatan adalah untuk melelakan senarai, membandingkan setiap elemen dengan penggantinya. Jika ia sama, kami memadamkan elemen semasa. Kaedah ini, walaupun berfungsi, agak tidak cekap dan tidak mempunyai keanggunan Pythonic.

Menggunakan GroupBy untuk Penyingkiran Elegan Pendua

Modul Python itertools menyediakan fungsi berkuasa yang dipanggil groupby yang cekap dapat mengumpulkan unsur-unsur berturut-turut. Dengan menggunakan groupby, kami boleh mencapai matlamat kami dengan lebih sedikit baris kod dan meningkatkan kejelasan.

Untuk bahagian pertama soalan (mencari elemen unik), kami boleh menggunakan groupby untuk mengumpulkan elemen berturut-turut, kemudian pilih kekunci (yang mewakili unik elemen).

from itertools import groupby

L = [1,1,1,1,1,1,2,3,4,4,5,1,2]
unique_elements = [key for key, _group in groupby(L)]
Salin selepas log masuk

Output:

[1, 2, 3, 4, 5, 1, 2]
Salin selepas log masuk

Memelihara Elemen Terbeza Menggunakan Jumlah

Untuk memperhalusi lagi penyelesaian, kita perlu menghapuskan elemen yang mempunyai pendua berturut-turut. Sekali lagi, groupby datang membantu kami. Dengan menyemak panjang setiap kumpulan, kita boleh menentukan sama ada sesuatu elemen itu berbeza atau tidak.

distinct_elements = [k for k, g in groupby(L) if len(list(g)) < 2]
Salin selepas log masuk

Output:

[2, 3, 5, 1, 2]
Salin selepas log masuk

Sebagai alternatif, kita boleh menggunakan ungkapan penjana untuk mengelak daripada mencipta senarai sementara untuk setiap kumpulan dan sebaliknya mengira jumlah penjana:

distinct_elements = [k for k, g in groupby(L) if sum(1 for i in g) < 2]
Salin selepas log masuk

Ini menyediakan pelaksanaan penyelesaian yang lebih padat dan cekap, dengan berkesan menghapuskan pendua berturut-turut sambil mengekalkan elemen yang berbeza.

Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengeluarkan Pendua Berturut-turut dengan Cekap daripada Senarai Semasa Memelihara Elemen Unik dalam Python?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan