こんにちはPyQサポートです。
今回は ==
とin
の使い分けについて紹介します。
質問
PyQクエスト19-5: 論理演算の実行順序(3つ以上条件式がある場合)の質問です。
下記の条件式はどちらも結果が同じになると思います。 今回の問題ではどちらを使っても良いでしょうか?
==
とin
について使い分けのコツを教えてください。
if '神奈川' == address and (adult_price <= 500 or child_price == 0): if '神奈川' in address and (adult_price <= 500 or child_price == 0):
回答・解説
==とinの違い
文字列が等しいことを判定するためには ==
を使用する必要があり、文字列の一部を含んでいるかを判定するには in
を使用します。
「in」演算子
文字列同士の in
演算子は、文字列中に対象となる文字列が含まれている場合に True
となります。
サンプルコード
以下のコードをPythonの対話モード等で試してみてください。
>>> address = ‘神奈川’ >>> '神奈川' == address True >>> '神奈川' in address True >>> '神' == address False >>> '神' in address True
Python公式ドキュメント:in演算
docs.python.org Python公式ドキュメントだと、このように記載されています。
in および not in 演算は、一般に単純な包含判定にのみ使われますが、(str, bytes, bytearray のような) 特殊なシーケンスでは部分シーケンス判定にも使われます。
部分シーケンス判定のサンプルコード
>>> address = '神奈川' >>> '神奈川' in address True >>> '神' in address True
包含判定のサンプルコード
>>> address = ['神奈川'] >>> '神奈川' in address True >>> '神' in address False
このように、包含判定の場合は、部分シーケンスでは一致しないので、注意が必要です。