2010-02-03 25 views
60

eğer Python, if koşuluna dayalı değerler döndürmek için C++ gibi bir anahtar kelime veya ifadeyi destekliyorsa, aynı satırda (? soru işareti ile ifade edilen C++ if)Python'da şartlı operatör mü?

// C++ 
value = (a > 10 ? b : c) 
+4

. Bütün bunların –

+1

Yinelenen: http://stackoverflow.com/search?q=%5Bpython%5D+ternary. Özellikle, bu: bir http://stackoverflow.com/questions/135303/how-can-i-closely-achieve-from-cc-in-python –

+0

olası yinelenen [mu Python bir üçlü koşullu operatörü var?] (Http: //stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator) – ks1322

cevap

105

(C++ if soru işareti ? ile ifade edilir) itibaren yapabileceğiniz:

Daha önce
value = b if a > 10 else c 

kısa devre etkisi kaybolur olarak semantik özdeş olmasa da sen, aşağıdaki gibi bir şey yapmak zorunda olacaktır:

value = [c, b][a > 10] 

Ayrıca 've ...' veya 'kullanarak başka bir kesmek var', ancak, hata bulmak zorlaşmasına yol açabilecek bazı durumlarda istenmeyen bir davranışı olduğu için kullanmamak en iyisidir. Ben bunu kullanmak en iyisidir düşünüyorum ben bile burada kesmek yazmak değil, ancak isterseniz Wikipedia bu konuda okuyabilirsiniz.

+5

hep bu yana "çok kafa karıştırıcı" olarak reddedilen ne notasyonu merak ettik. –

+0

Zaman ayırdığınız için teşekkürler! Bu harika! –

+2

+1, Lambda ifadeleriyle bile olsa bu tür bir 'if' kullanabilirsiniz! – Serge

-2

basit en iyisidir ve her sürümünde çalışır. C++ operatörü "Koşul operatörü" ya da "üçlü operatör" olarak adlandırılır Bu

if a>10: 
     value="b" 
    else: 
     value="c" 
+0

Merhaba, zaman ayırdığınız için teşekkürler! –