>>> item = 2
>>> seq = [1,2,3]
>>> print (item in seq)
True
>>> print (item in seq is True)
False
2番目のprint
文の出力がFalse
の理由は何ですか?`in`演算子からの予期しない結果 -
>>> item = 2
>>> seq = [1,2,3]
>>> print (item in seq)
True
>>> print (item in seq is True)
False
2番目のprint
文の出力がFalse
の理由は何ですか?`in`演算子からの予期しない結果 -
in
とis
は、Pythonの比較演算子です。その点に関しては、たとえば<
と==
と同じです。一般的に、
expr1 <comparison1> expr2 <comparison2> expr3
はexpr2
は一度だけ評価されることを除い
(expr1 <comparison1> expr2) and (expr2 <comparison2> expr3)
として扱われます。そのため、たとえば
0 <= i < n
のように動作します。ただし、には、の連鎖比較演算子が適用されます。あなたの例では、
item in seq is True
は、式全体はFalseですので、
(item in seq) and (seq is True)
seq is True
一部がFalseとして扱われます。
print((item in seq) is True)
Click here for the docs:あなたはおそらく意図したものを取得するには、グループを変更するために括弧を使用しています。
>>>print ((item in seq) and (seq is True))
False
以下のように
以下の回答は正しくありません。型 'BOOL' の引数私は(ブールFalse
に評価された)seq is True
を評価していると信じて反復可能な
前答え ではありません。
In [17]: item in (seq is True)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-17-4e7d6b2332d7> in <module>()
----> 1 item in (seq is True)
例外TypeError:コメントは、それを検証I説明しますitem in False
(これは、False
と評価される)を評価する。
おそらくprint (item in seq) is True
(これはTrue
と評価されます)を意味しますか?
'item in False'は' TypeError'を発生させます。これは右辺の値が反復可能でなければならないため、 'False'はそうではありません。 –
変更された回答。ありがとう – travelingbones
これは、Pythonが式を評価する方法のためかもしれません。 'print(item in seq)is True)'を使用したいかもしれません。 –