4

次のリストを検討してください。

list = [1,2,3,4,5]

このリストに 9 という数字がないかどうかを確認したい。これには 2 つの方法があります。

方法 1: この方法は機能します。

if not 9 in list: print "9 is not present in list"

方法 2: この方法は機能しません。

if 9 in list == False: print "9 is not present in list"

方法2がうまくいかない理由を誰か説明してもらえますか?

4

2 に答える 2

18

これは、比較演算子の連鎖によるものです。ドキュメントから:

比較は任意に連鎖できます。たとえば、x < y <= zは と同等ですがx < y and y <= zyは 1 回だけ評価されます (ただし、どちらの場合もが falseである場合zはまったく評価されません)。x < y

9 in list == False式が as として実行されると想定していますが(9 in list) == False、そうではありません。

代わりに、python は代わりにそれを評価し(9 in list) and (list == False)、後者の部分は決して True ではありません。

not in本当に演算子を使用したいので、変数に名前を付けることは避けlistます:

if 9 not in lst:
于 2013-03-11T10:49:57.737 に答える
3

そのはず:

if (9 in list) == False: print "9 is not present in list"

于 2013-03-11T10:49:07.050 に答える