Jadual Kandungan
Contoh
Output
Senaraikan pemahaman
Tentukan fungsi
Bandingkan setiap senarai
Sediakan operasi
Kesimpulan
Rumah pembangunan bahagian belakang Tutorial Python Python - Alih keluar subsenarai yang wujud dalam subsenarai lain

Python - Alih keluar subsenarai yang wujud dalam subsenarai lain

Sep 18, 2023 pm 06:53 PM

Python - 删除在另一个子列表中存在的子列表

Python ialah perisian yang digunakan secara meluas yang mempunyai pelbagai tujuan dan pelbagai fungsi untuk melaksanakan tugas yang berbeza. Satu ciri berguna python ialah kefungsian senarai yang membantu dalam mengumpul dan menyimpan data yang berbeza tetapi banyak kali pengguna menghadapi masalah semasa memadamkan subsenarai yang sudah wujud dalam subsenarai lain. Jadi, dalam artikel ini, kita akan belajar cara memadamkan subsenarai berbeza yang sudah wujud dalam subsenarai lain.

Untuk memahami masalah dengan jelas, mari kita ambil contoh di mana kita perlu memadamkan subsenarai yang datanya sudah wujud dalam subsenarai lain.

Contoh

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]
#All the sublist whose data is already present in other sublist are to be removed
Salin selepas log masuk

Output

Subsenarai bernama [Shyam,John] dan [David,Stefan] sudah mempunyai data yang sama dalam subsenarai lain, jadi subsenarai tambahan ini akan dipadamkan. Output sepatutnya kelihatan seperti ini:

new_list = [[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Salin selepas log masuk

Sekarang kita akan belajar tentang cara berbeza untuk memadamkan subsenarai yang sudah wujud dalam subsenarai.

Di sini kami telah menyebut kaedah yang mungkin berbeza:

Senaraikan pemahaman

Cara paling mudah untuk memadam semua subsenarai yang terdapat dalam subsenarai lain adalah dengan bantuan pemahaman senarai. Semak semua subsenarai yang wujud dalam senarai dan salin yang tidak wujud dalam mana-mana subsenarai lain ke senarai baharu. Mari kita ambil contoh untuk memahami dengan lebih jelas:

Contoh

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]
New_list = [sublist for sublist in duplicate_list if not any(set(sublist) <= set(other) for other in duplicate_list if sublist is not other)]
#We first check all the lists of the duplicate list through the any() function and then we check for any repeatation with the help of <= operator
Salin selepas log masuk

Output

Selepas kod selesai, kami akan mencetak output kod di atas. Output kod di atas adalah seperti berikut:

[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Semua subsenarai tambahan telah dialih keluar, jadi kami menulis kod yang betul untuk mengalih keluar subsenarai yang sudah ada dalam subsenarai.

Tentukan fungsi

Cara lain untuk menyelesaikan masalah ini ialah dengan mencipta fungsi berasingan yang benar-benar baharu yang menapis semua subsenarai yang wujud dalam subsenarai lain. Ini boleh dilakukan dengan menentukan syarat untuk fungsi dan membiarkannya berjalan dengan sewajarnya.

Contoh

def is_sublist(sublist, other):  #is_sublist is the function defined
    return set(sublist) <= set(other)  #the functions checks 2 sublists at a time and if the sublist already exists then it returns with `true` feedback and does not consider the extra sublist

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]
new_list = [sublist for sublist in duplicate_list if not any(is_sublist(sublist, other) for other in duplicate_list if sublist is not other)]
Salin selepas log masuk

Output

Keluaran kod di atas adalah seperti berikut:

[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Semua subsenarai tambahan dialih keluar, jadi kami menulis kod yang betul untuk mengalih keluar semua subsenarai tambahan.

Bandingkan setiap senarai

Ini ialah kaedah yang sangat kompleks untuk memadamkan subsenarai yang sudah wujud dalam subsenarai lain. Dalam kaedah ini, semua subsenarai dibandingkan antara satu sama lain dan subsenarai bukan pendua disalin ke senarai baharu. Kita boleh memahami perkara ini dengan bantuan contoh berikut:

Contoh

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]
#A copy of duplicate list is created to avoid any errors in the original file
new_list = duplicate_list[:]

#Check each sublist present in the new_list
for sublist in duplicate_list:
    for other in new_list:
        # Checking of presence of sublist present in other sublist is done
        if sublist != other and set(sublist).issubset(other):   #issubset is used to check presence of one sublist in another sublist
            # Remove all the repeating sublist
            new_list.remove(sublist)
            break  #break is used to stop the loop so that it does not keep checking continuosly

print(new_list)
Salin selepas log masuk

Output

Keluaran kod di atas adalah seperti berikut:

[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kaedah ini lebih sesuai apabila senarai terlalu panjang dan mengandungi sejumlah besar subsenarai dengan banyak elemen.

Sediakan operasi

Dalam operasi ini, subsenarai yang sedia ada dalam subsenarai lain dipadamkan dengan bantuan operasi set. Dalam pendekatan ini kita boleh menukar setiap subsenarai dalam senarai kepada satu set dan dengan bantuan operasi yang berbeza kita boleh mengalih keluar semua subsenarai yang terdapat dalam subsenarai lain. Kita boleh memahaminya dengan lebih jelas melalui contoh berikut:

Contoh

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]

new_list = []

for sublist in duplicate_list:
    is_subset = False
    for other in duplicate_list:
        if sublist != other and set(sublist).difference(set(other)) == set():  #The difference operation is used to calculate the difference betwen two sets
            is_subset = True  #When the sublist is present in another sublist the result of is_subset will be true 
            break  #Once the result is found to be true, the loop is broke and all the other sublist are copied into the new_list
    if not is_subset:
        new_list.append(sublist)

print(new_list)
Salin selepas log masuk

Output

Keluaran kod di atas adalah seperti berikut:

[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Semua subsenarai yang terdapat dalam subsenarai lain telah dipadamkan.

Kesimpulan

Masalah memadamkan subsenarai yang sudah wujud dalam subsenarai lain adalah masalah yang sering dihadapi oleh pengguna, dan banyak kali ia mengakibatkan memakan banyak masa pengguna. Oleh itu, adalah mungkin untuk memadamkan semua subsenarai dengan cepat yang wujud dalam subsenarai lain menggunakan kaedah berbeza yang dicadangkan dalam artikel sebelumnya.

Atas ialah kandungan terperinci Python - Alih keluar subsenarai yang wujud dalam subsenarai lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Apr 01, 2025 pm 05:09 PM

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah? Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah? Apr 02, 2025 am 07:15 AM

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam? Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam? Apr 02, 2025 am 07:18 AM

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Apr 01, 2025 pm 11:15 PM

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bagaimanakah uvicorn terus mendengar permintaan http tanpa serving_forever ()? Bagaimanakah uvicorn terus mendengar permintaan http tanpa serving_forever ()? Apr 01, 2025 pm 10:51 PM

Bagaimanakah Uvicorn terus mendengar permintaan HTTP? Uvicorn adalah pelayan web ringan berdasarkan ASGI. Salah satu fungsi terasnya ialah mendengar permintaan HTTP dan teruskan ...

Bagaimana untuk mendapatkan data berita yang melangkaui mekanisme anti-crawler Investing.com? Bagaimana untuk mendapatkan data berita yang melangkaui mekanisme anti-crawler Investing.com? Apr 02, 2025 am 07:03 AM

Memahami Strategi Anti-Crawling of Investing.com Ramai orang sering cuba merangkak data berita dari Investing.com (https://cn.investing.com/news/latest-news) ...

See all articles