2009-11-06 26 views

cevap

157
a = '123' if b else '456' 
+10

Bu üçlü operatör Python 2.5'te tanıtıldı. –

+0

teşekkürler! tam olarak aradığım şey. python docs web sitesinde bulamadı. – huy

+0

İleride başvurmak için, koşullu ifade için Python belgelerine bakın: http://docs.python.org/reference/expressions.html#boolean-operations –

9

Benim şifreli versiyon ...

a = ['123', '456'][b == True] 
+1

Tek satırlık ifadeden önce eski yaklaşımlardan biriydi. Mantıksal olarak bunu nasıl yapabilirsin: 'Doğru ve 'foo' ya da 'bar' '' – jdi

14

a = 'foo' if True else 'bar' iken beyanı (piton 2.5 +) Sürümünüze bir 1-to-1 eşdeğer ve üçlü yapmanın daha modern bir yol olabilir eğer:

a = b is True and "123" or "456" 

... veya sadece wan eğer: python için kısaltılmalıdır

a = (b == True and "123" or "456") 

... t ... genelde kahvalti değerinin doğruluğuna test etmek

a = b and "123" or "456" 

? : anlamıyla deniyor and or

+2

Bu ne tür bir kara büyüdür? Teşekkürler – Inversus

+1

"123" değeri aslında boş bir diziyse veya yanlış bir değer olarak değerlendirilirse, buradaki ve..or yaklaşımının size geri tepebileceğine dikkat etmeliyim. If..else biraz daha güvenli. – jdi

+0

Temiz! Bunun için teşekkürler. –