Meratakan Senarai Cetek dalam Python
Meratakan senarai cetek iterable ialah operasi biasa dalam Python. Walaupun terdapat beberapa pendekatan, setiap satu menawarkan prestasi dan kebolehbacaan yang berbeza-beza.
1. Pemahaman Senarai
Pemahaman senarai bersarang boleh kelihatan meratakan senarai, tetapi ia menghasilkan NameError kerana pembolehubah yang digunakan dalam pemahaman luar (cth., menuitem) tidak ditakrifkan.
2. reduce
Fungsi reduce membenarkan untuk meratakan menggunakan list.__add__ sebagai operasi pengurangan. Walau bagaimanapun, kaedah ini memerlukan panggilan senarai(x) tambahan untuk menukar objek Django QuerySet kepada senarai.
3. itertools.chain
Fungsi itertools.chain menyediakan pilihan yang lebih cekap untuk meratakan senarai. Ia menggunakan penjana untuk menghasilkan elemen daripada iterables, mengelakkan keperluan untuk menyalin atau memahami senarai.
Contoh Kod:
import itertools list_of_menuitems = [['image00', 'image01'], ['image10'], []] # Flatten using list comprehension (not recommended) # [image for image in menuitem for menuitem in list_of_menuitems] # Flatten using reduce # reduce(list.__add__, (list(mi) for mi in list_of_menuitems)) # Flatten using itertools.chain flattened_list = list(itertools.chain(*list_of_menuitems))
Rantai ialah kaedah pilihan untuk meratakan senarai cetek kerana ia prestasi dan kemudahan penggunaan. Ia boleh mengendalikan sebarang lelaran, termasuk Django QuerySets.
Atas ialah kandungan terperinci Apakah Cara Paling Cekap untuk Meratakan Senarai Cetek dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!