Saya telah membaca tautan di bawah ini, tetapi itu tidak menjawab pertanyaan saya.
Apakah Python memiliki operator bersyarat terner? (pertanyaannya adalah tentang memadatkan pernyataan if-else menjadi satu baris)
Apakah ada cara yang lebih mudah untuk menulis pernyataan if-elif-else agar sesuai dalam satu baris?
Sebagai contoh,
if expression1:
statement1
elif expression2:
statement2
else:
statement3
Atau contoh dunia nyata:
if i > 100:
x = 2
elif i < 100:
x = 1
else:
x = 0
Saya hanya merasa jika contoh di atas bisa ditulis dengan cara berikut, bisa jadi terlihat lebih ringkas.
x=2 if i>100 elif i<100 1 else 0 [WRONG]
sumber
a = 1 if i < 100 else (2 if i > 100 else 0)
(Belum diuji, tapi saya pikir itu harus berfungsi)Jika Anda hanya membutuhkan ekspresi yang berbeda untuk kasus yang berbeda maka ini mungkin berhasil untuk Anda:
Sebagai contoh:
sumber
"pos"
adalah tidak sebuah pernyataan, itu ekspresi.Hanya menumpuk klausa if lain di pernyataan lain. Tapi itu tidak membuatnya terlihat lebih cantik.
sumber
Terlepas dari beberapa jawaban lain: YA itu mungkin :
diterjemahkan menjadi satu baris berikut:
sebenarnya Anda bisa menyarangkannya sampai tak terbatas. Nikmati ;)
sumber
Secara opsional, Anda dapat benar-benar menggunakan
get
metode adict
:Anda tidak memerlukan
get
metode ini jika salah satu kunci dijamin akan dievaluasi keTrue
:Paling-paling salah satu kunci idealnya harus dievaluasi ke
True
. Jika lebih dari satu kunci dievaluasiTrue
, hasilnya mungkin tampak tidak dapat diprediksi.sumber
Ada alternatif yang cukup tidak terbaca menurut saya tetapi saya akan tetap membagikannya hanya sebagai rasa ingin tahu:
Info selengkapnya di sini: https://docs.python.org/3/library/stdtypes.html#boolean-operations-and-or-not
sumber
Jika Anda ingin menggunakan kode yang disebutkan di atas dalam satu baris, Anda dapat menggunakan yang berikut ini:
Saat melakukannya, x akan diberikan 2 jika i> 100, 1 jika i <100 dan 0 jika i = 100
sumber
Itu juga tergantung pada sifat ekspresi Anda. Saran umum tentang jawaban lain dari "tidak melakukannya" cukup valid untuk pernyataan umum dan ekspresi umum.
Tetapi jika yang Anda butuhkan hanyalah tabel "pengiriman", seperti, memanggil fungsi yang berbeda bergantung pada nilai opsi yang diberikan, Anda dapat meletakkan fungsi yang akan dipanggil di dalam kamus.
Sesuatu seperti:
Alih-alih jika-lain:
sumber
Orang telah menyebutkan ekspresi terner. Terkadang dengan tugas bersyarat sederhana sebagai contoh Anda, dimungkinkan untuk menggunakan ekspresi matematika untuk melakukan tugas bersyarat. Ini mungkin tidak membuat kode Anda sangat mudah dibaca, tetapi membuatnya hanya dalam satu baris yang cukup pendek. Contoh Anda bisa ditulis seperti ini:
Perbandingannya adalah True atau False, dan saat mengalikan dengan angka akan menjadi 1 atau 0. Seseorang dapat menggunakan + sebagai ganti | di tengah-tengah.
sumber
The operator ternary adalah cara terbaik untuk ekspresi ringkas. Sintaksnya adalah
variable = value_1 if condition else value_2
. Jadi, misalnya, Anda harus menerapkan operator terner dua kali:sumber
Anda bisa menggunakan terner if bersarang pernyataan.
sumber