擺脫打印的缺點,因爲使用from __future__ import print_function
作爲Python2.x中的語句是第一步。那麼下面的所有工作:
x in l and (lambda: print("yes"))() # what an overkill!
(x in l or print("no")) and print("yes") # note the order, print returns None
print("yes") if x in l else print("no") # typical A if Cond else Y
print("yes" if x in l else "no") # a more condensed form
更好玩,如果你成這樣了,你可以考慮一下這款 - 打印和返回真或假,這取決於x in l
條件(讓我用假雙不):
def check_and_print(x, l):
return x in l and not print("yes") or not not print("no")
這很醜。要使打印透明,可以定義另外兩個打印版本 ,它們返回True或False。如果你要打印的東西在真假兩例不同,使用條件表達創造價值打印
def trueprint(*args, **kwargs):
print(*args, **kwargs)
return True
def falseprint(*args, **kwargs):
return not trueprint(*args, **kwargs)
result = x in l and trueprint("yes") or falseprint("no")
來源
2012-02-19 00:14:05
Frg
A [類似的問題](http://stackoverflow.com/questions/9344345/a-python-one-liner-if-x-in-y-do-x)已被提出了幾個幾小時前。 – 2012-02-18 23:46:57
但是,我想這樣做[短路的方式](http://en.wikipedia.org/wiki/Short-circuit_evaluation) – StreetTriple 2012-02-18 23:50:24
'如果x in l' *做*短路,因爲它' x'匹配'l'中的第一個元素,它等於它,它不評估其餘的元素 – 2012-02-18 23:54:00