Menggunakan Pemahaman Senarai untuk Tugasan Bersyarat
Dalam perbincangan baru-baru ini, seorang pengaturcara menghadapi cabaran dalam menukar gelung untuk dengan if/ else struktur ke dalam pemahaman senarai ringkas. Segmen kod asal kelihatan seperti:
results = [] for x in xs: results.append(f(x) if x is not None else '')
Niatnya adalah untuk menetapkan rentetan kosong kepada elemen dalam senarai hasil jika elemen yang sepadan dalam xs ialah Tiada dan untuk menggunakan fungsi f kepada elemen bukan Tiada.
Percubaan awal untuk mencipta pemahaman senarai gagal dengan SyntaxError:
[f(x) for x in xs if x is not None else '']
Untuk berjaya menggunakan senarai pemahaman untuk tugasan ini, sintaks yang betul ialah:
[f(x) if x is not None else '' for x in xs]
Pengubahsuaian ini mengekalkan susunan semakan if/else, yang penting untuk penilaian yang betul.
Memahami Pemahaman Senarai Sintaks
Secara umum, senaraikan pemahaman dengan tugasan bersyarat mematuhi perkara berikut sintaks:
[f(x) if condition else g(x) for x in sequence]
di mana:
Selain itu, untuk senarai pemahaman yang hanya melibatkan elemen penapisan berdasarkan keadaan, sintaksnya ialah:
[f(x) for x in sequence if condition]
Ungkapan Bersyarat Melangkaui Pemahaman Senarai
Perlu diperhatikan bahawa ungkapan bersyarat seperti yang digunakan dalam pemahaman senarai tidak eksklusif untuk binaan ini. Ia boleh digunakan dalam pelbagai situasi di mana pilihan antara dua nilai ungkapan diperlukan berdasarkan syarat, dengan tujuan yang sama seperti operator ternary ?: dalam bahasa lain.
Contoh ungkapan bersyarat di luar a pemahaman senarai:
value = 123 print(value, 'is', 'even' if value % 2 == 0 else 'odd')
Ungkapan ini menilai sama ada nilai boleh dibahagikan dengan 2 dan mencetak rentetan yang sepadan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pemahaman Senarai dengan Cekap untuk Tugasan Bersyarat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!