Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Meratakan Senarai Cetek dengan Cekap dalam Python?
Meratakan Senarai Cetek dengan Iterables dalam Python
Dalam Python, meratakan senarai cetek, di mana setiap elemen adalah boleh lelar sendiri, boleh menimbulkan cabaran . Artikel ini meneroka pelbagai cara untuk meratakan senarai sedemikian dengan berkesan, mengutamakan prestasi dan kejelasan kod.
Pendekatan:
Pemahaman Senarai
Percubaan untuk menggunakan pemahaman senarai bersarang mungkin meningkatkan NameRalat disebabkan oleh pembolehubah tidak ditentukan dalam gelung bersarang:
[image for image in menuitem for menuitem in list_of_menuitems]
Kurangkan dengan Fungsi Lambda:
Menggunakan pengurangan dengan fungsi lambda menawarkan penyelesaian mudah:
reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))
Walau bagaimanapun, kebolehbacaan pendekatan ini mungkin menderita akibat penggunaan list(x).
Itertools.chain()
Itertools.chain() menyediakan yang cekap dan elegan kaedah untuk meratakan senarai cetek. Ia dengan lancar menggabungkan iterable menjadi satu iterable:
from itertools import chain list(chain(*list_of_menuitems))
Pendekatan ini mengelakkan salinan berlebihan dan menawarkan prestasi yang setanding untuk mengurangkan.
Itertools.chain.from_iterable ()
Untuk dipertingkatkan kejelasan, pertimbangkan untuk menggunakan itertools.chain.from_iterable():
chain = itertools.chain.from_iterable([[1,2],[3],[5,89],[],[6]]) print(list(chain))
Ini menyatakan perataan secara eksplisit tanpa menggunakan sihir pengendali.
Kesimpulan:
Itertools.chain() dan variasinya menawarkan berkesan dan boleh dibaca kaedah untuk meratakan senarai cetek, mengutamakan prestasi dan kejelasan kod. Pertimbangkan kes penggunaan khusus dan keutamaan kebolehbacaan apabila memilih pendekatan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meratakan Senarai Cetek dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!