Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Kami Boleh Mengeluarkan Pendua Berturut-turut dengan Cekap daripada Senarai Semasa Memelihara Elemen Unik dalam 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)]
Output:
[1, 2, 3, 4, 5, 1, 2]
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]
Output:
[2, 3, 5, 1, 2]
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]
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!