Mencari Persimpangan Senarai Bersarang
Mendapatkan semula persimpangan daripada senarai bersarang menimbulkan cabaran yang berbeza daripada pendekatan mudah untuk senarai rata. Artikel ini meneroka penyelesaian untuk menentukan persimpangan senarai bersarang dengan cekap.
Seperti yang ditunjukkan dalam kandungan masalah, mencari persimpangan senarai rata boleh dicapai dengan mudah menggunakan persimpangan set:
b1 = [1,2,3,4,5,9,11,15] b2 = [4,5,6,7,8] print(set(b1) & set(b2)) # Output: {4, 5}
Walau bagaimanapun , apabila berurusan dengan senarai bersarang seperti:
c1 = [1, 6, 7, 10, 13, 28, 32, 41, 58, 63] c2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]
pendekatan mudah gagal menghasilkan hasil yang diingini:
print(set(c1) & set(c2)) # Output: set([])
Persimpangan yang kami sasarkan ialah:
c3 = [[13, 32], [7, 13, 28], [1, 6]]
Penyelesaian:
Penyelesaian terletak pada menukarkan bersarang senarai ke set, melakukan set persimpangan, dan kemudian membina semula senarai bersarang asal struktur:
# Convert nested lists to sets set_c1 = set(c1) set_c2 = [set(sublist) for sublist in c2] # Compute intersections intersections = [set_c1.intersection(sublist) for sublist in set_c2] # Reconstruct nested list structure result = [[item for item in intersection] for intersection in intersections] # Print the result print(result) # Output: [[13, 32], [7, 13, 28], [1, 6]]
Dengan memanfaatkan set persilangan dan set kefahaman, penyelesaian ini cekap mendapatkan semula persilangan senarai bersarang, mengekalkan strukturnya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Persimpangan Senarai Bersarang dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!