Rumah > Artikel > pembangunan bahagian belakang > Bolehkah Senarai Pemahaman Mempunyai Leter Bergantung?
Iterators Bebas dalam Pemahaman Senarai
Dalam Python, pemahaman senarai membenarkan berbilang gelung lelaran. Pertimbangkan contoh berikut:
<code class="python">[(x, y) for x in a for y in b]</code>
di mana a dan b ialah jujukan. Pemahaman ini mencipta pasangan elemen daripada hasil darab Cartesian a dan b.
Bolehkah Peulang Bergantung?
Bolehkah satu lelaran dalam pemahaman senarai merujuk kepada yang lain? Jawapannya ialah ya, dan kod berikut menunjukkannya:
<code class="python">[x for x in a for a in b]</code>
Dalam pemahaman ini, lelaran gelung luar a menjadi lelaran untuk gelung dalam. Ini secara berkesan meratakan senarai bersarang.
Contoh
Jika kami mempunyai senarai bersarang a:
<code class="python">a = [[1, 2], [3, 4]]</code>
Pemahaman senarai berikut akan meratakannya ke dalam satu senarai:
<code class="python">[x for x in a for a in b]</code>
Hasil:
[1, 2, 3, 4]
Penyelesaian Alternatif Menggunakan Penjana
Dalam kod Python yang disediakan, teksnya ialah disimpan sebagai ayat, dan tugasnya adalah untuk mengeluarkan satu senarai perkataan. Begini cara anda boleh mencapai ini menggunakan penjana:
<code class="python">text = (("Hi", "Steve!"), ("What's", "up?")) gen = (word for sentence in text for word in sentence)</code>
Pembolehubah gen kini menghasilkan senarai perkataan yang diratakan:
<code class="python">for word in gen: print(word)</code>
Output:
Hi Steve! What's up?
Atas ialah kandungan terperinci Bolehkah Senarai Pemahaman Mempunyai Leter Bergantung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!