2015-10-30 18 views
6

Birden çok, bir python lambda işlevi içindeki ifadeler kullanılıyorsa 3 kullanmaya çalışıyorum. İşte benim kodum:Bir lambda işlevindeki ifadeler

y=lambda symbol: 'X' if symbol==True 'O' if symbol==False else ' ' 

Sadece iyi çalışma ifadeleri varsa iki tane alabildim ör.

x=lambda cake: "Yum" if cake=="chocolate" else "Yuck" 

Esasen, ben ve '' aksi halde, sembol Doğru ise eğer yanlış ifadeler, 'O' 'X' dönmek için eğer bir lambda fonksiyonu kullanmak istiyorum. Hatta bu mümkün olsa bile emin değilim, ama ben internet üzerinde herhangi bir bilgi bulmak mümkün değildi, bu yüzden herhangi bir yardım gerçekten takdir ediyorum :)

+0

son "else" . Sonuncusu ne gezebilir ki? – ddsnowboard

+1

@ddsnowboard, boolean olmayan neredeyse her şey. – bereal

+0

@bereal Yani fikir, 'sembol' herhangi bir türde olabilir? – ddsnowboard

cevap

6

'O' önce else eksik. This çalışır: Ancak

y = lambda symbol: 'X' if symbol==True else 'O' if symbol==False else ' ' 

, sana Adam Smith's approach tutması gerektiğini düşünüyorum. Bunu okumayı daha kolay buluyorum.

+1

Senden daha! Bu harika çalışıyor. –

13

Sen sembolize dict.get varsayılan değerini kullanarak, bu test etmek için anonim işlevi içinde anonim dicti kullanabilir.NEWLINENEWLINEKonum sembol bir boolean ise, sadece iki değere sahip olabilir

y = lambda sym: {False: 'X', True: 'Y'}.get(sym, ' ') 
+0

Teşekkürler, bu çok yardımcı oluyor. Ben w0lf'ın cevabını işaretledim, çünkü tam olarak sorumu cevapladı, ama yaklaşımın kesinlikle daha pythonik ve mantıklı. –

+0

@ PM2Ring Herkese hayır, çünkü Doğruyu ve Falsin'i test etmek yerine "Doğru" ve "Yanlış" değerine eşdeğerlik için test yapıyorsunuz. Ben düzenlerim –