Bolehkah Senarai Pemahaman Mempunyai Leter Bergantung?

Barbara Streisand
Lepaskan: 2024-11-02 13:21:02
asal
598 orang telah melayarinya

 Can List Comprehensions Have Dependent Iterators?

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>
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk

Pemahaman senarai berikut akan meratakannya ke dalam satu senarai:

<code class="python">[x for x in a for a in b]</code>
Salin selepas log masuk
Salin selepas log masuk

Hasil:

[1, 2, 3, 4]
Salin selepas log masuk

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 = ((&quot;Hi&quot;, &quot;Steve!&quot;), (&quot;What's&quot;, &quot;up?&quot;))
gen = (word for sentence in text for word in sentence)</code>
Salin selepas log masuk

Pembolehubah gen kini menghasilkan senarai perkataan yang diratakan:

<code class="python">for word in gen:
    print(word)</code>
Salin selepas log masuk

Output:

Hi
Steve!
What's
up?
Salin selepas log masuk

Atas ialah kandungan terperinci Bolehkah Senarai Pemahaman Mempunyai Leter Bergantung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!