Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Pemahaman Senarai Bersarang Meratakan Senarai dalam Python?

Bagaimanakah Pemahaman Senarai Bersarang Meratakan Senarai dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-04 06:07:12227semak imbas

How Does Nested List Comprehension Flatten a List in Python?

Pemahaman Senarai Bersarang: Memecah Sintaks

Dalam Python, pemahaman senarai ialah cara ringkas untuk menjana senarai baharu berdasarkan senarai sedia ada satu. Walau bagaimanapun, apabila ia berkaitan dengan pemahaman senarai bersarang, sintaks boleh menjadi agak mengelirukan.

Pertimbangkan coretan berikut:

a = [[1,2],[3,4],[5,6]]
b = [x for xs in a for x in xs]

Kod ini mengubah senarai bersarang a menjadi senarai diratakan b yang mengandungi semua unsur daripada a. Untuk memahami cara ini berfungsi, mari kita pecahkan sintaks:

[x for xs in a for x in xs]

Ini ialah pemahaman bersarang dua peringkat. Ia pada asasnya mengatakan:

# Loop over the outer list
for xs in a:
    # Loop over the inner list
    for x in xs:
        # Add x to the new list b
        b.append(x)

Dalam erti kata lain, ia mula-mula melelang ke atas senarai luar a, menetapkan setiap subsenarai kepada pembolehubah xs, dan kemudian melelaran ke atas subsenarai, memperuntukkan setiap elemen kepada pembolehubah x. Untuk setiap elemen x, ia menambahkannya pada senarai b baharu.

Proses membuka gelendong ini mengikut susunan gelung ditulis: gelung paling luar berbeza paling perlahan, diikuti gelung dalam. Ini ialah prinsip "Orang Tepat" yang disebut dalam PEP202, yang mengatakan bahawa pemahaman harus ditulis dengan indeks yang paling cepat berubah-ubah pada gelung paling dalam.

Dengan memahami prinsip ini, anda dengan yakin boleh menguraikan pemahaman senarai bersarang yang kompleks walaupun .

Atas ialah kandungan terperinci Bagaimanakah Pemahaman Senarai Bersarang Meratakan Senarai dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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