在這裏,您將使用any
。
if any(variable==value for value in (value1, value2, value3)):
你也可以使用in
這個簡單的例子。
if variable in (value1, value2, value3):
如果這是一個效率問題,in
要快得多,你可以從這個拆卸見。
dis.dis('1 in (2, 3, 4, 1)')
1 0 LOAD_CONST 0 (1)
3 LOAD_CONST 4 ((2, 3, 4, 1))
6 COMPARE_OP 6 (in)
9 RETURN_VALUE
dis.dis('any(1==x for x in (2, 3, 4, 1))')
1 0 LOAD_NAME 0 (any)
3 LOAD_CONST 0 (<code object <genexpr> at 0x036C5200, file "<dis>", line 1>)
6 LOAD_CONST 1 ('<genexpr>')
9 MAKE_FUNCTION 0
12 LOAD_CONST 6 ((2, 3, 4, 1))
15 GET_ITER
16 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
19 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
22 RETURN_VALUE
所以,in
是偉大的,如果你只是做一個簡單的比較的變量,但any
允許更多的靈活性,對於與any
一些可能的例子,這不是可能的in
(注:這是一個不好的例子,但週一晚了),看看這個:
if any(0<x<y for y in (1, 3, 5, 6, -1))
這不是「標準編碼語法」,而選項2沒有任何效率問題。 – user2357112
這是我所知道的最常用的語言(PHP,Javascript,C++等)。 – Krii
哦,順便說一下,[Perl 6實際上有你想要的功能](http://doc.perl6.org/type/Junction)。據說Perl 6在聖誕節前後發佈了一個1.0版本,所以這很好。 – user2357112