Rumah >pembangunan bahagian belakang >Tutorial Python >Python - Alih keluar subsenarai yang wujud dalam subsenarai lain
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.
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
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]]
Sekarang kita akan belajar tentang cara berbeza untuk memadamkan subsenarai yang sudah wujud dalam subsenarai.
Di sini kami telah menyebut kaedah yang mungkin berbeza:
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:
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
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]]
Semua subsenarai tambahan telah dialih keluar, jadi kami menulis kod yang betul untuk mengalih keluar subsenarai yang sudah ada dalam subsenarai.
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.
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)]
Keluaran kod di atas adalah seperti berikut:
[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Semua subsenarai tambahan dialih keluar, jadi kami menulis kod yang betul untuk mengalih keluar semua subsenarai tambahan.
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:
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)
Keluaran kod di atas adalah seperti berikut:
[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Kaedah ini lebih sesuai apabila senarai terlalu panjang dan mengandungi sejumlah besar subsenarai dengan banyak elemen.
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:
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)
Keluaran kod di atas adalah seperti berikut:
[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Semua subsenarai yang terdapat dalam subsenarai lain telah dipadamkan.
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!