Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menolak Satu Senarai daripada Yang Lain dengan Cekap dalam Python?

Bagaimana untuk Menolak Satu Senarai daripada Yang Lain dengan Cekap dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-10-23 13:50:031077semak imbas

How to Subtract One List from Another Efficiently in Python?

Menolak Satu Senarai daripada Yang Lain: Teknik Cekap dan Pelaksanaan Tersuai

Menolak satu senarai daripada senarai yang lain ialah operasi biasa dalam pengaturcaraan. Dalam Python, melaksanakan operasi ini secara langsung menggunakan operator - boleh mengehadkan. Untuk menolak senarai dengan berkesan, pertimbangkan pendekatan berikut:

Pemahaman Senarai

Untuk menolak satu senarai (y) daripada yang lain (x) sambil mengekalkan susunan unsur dalam x , gunakan pemahaman senarai:

<code class="python">[item for item in x if item not in y]</code>

Pendekatan ini berulang ke atas setiap elemen dalam x dan memasukkannya dalam senarai baharu hanya jika ia tiada dalam y.

Tetapkan Perbezaan

Jika susunan unsur tidak penting, pendekatan yang lebih cekap ialah menggunakan perbezaan set:

<code class="python">list(set(x) - set(y))</code>

Kaedah ini mencipta set daripada setiap senarai, melakukan penolakan pada mereka, dan menukar set yang terhasil kembali kepada senarai. Ia lebih pantas daripada pemahaman senarai tetapi tidak mengekalkan susunan asal.

Kelas Tersuai

Untuk membenarkan sintaks penolakan (x - y) berfungsi secara langsung pada senarai, satu boleh mencipta kelas tersuai:

<code class="python">class MyList(list):
    ...
    def __sub__(self, other):
        ...</code>

Mengatasi kaedah __sub__ mendayakan tingkah laku tolak tersuai, menyediakan kefungsian yang diingini.

Contoh Penggunaan:

<code class="python">x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [1, 3, 5, 7, 9]

# List Comprehension
result_comprehension = [item for item in x if item not in y]
print(result_comprehension)  # [0, 2, 4, 6, 8]

# Set Difference
result_set = list(set(x) - set(y))
print(result_set)  # [0, 2, 4, 6, 8]

# Custom Class
class MyList(list):
    ...
x_custom = MyList([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
y_custom = MyList([1, 3, 5, 7, 9])
result_custom = x_custom - y_custom 
print(result_custom)  # [0, 2, 4, 6, 8]</code>

Pendekatan ini menyediakan cara yang berbeza untuk menolak senarai dalam Python, bergantung pada keperluan khusus dan tingkah laku yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Menolak Satu Senarai daripada Yang Lain dengan Cekap dalam Python?. 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