Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

「どちらを使っても良い?」Pythonの「==」と「in」の使い分けについて紹介します

f:id:kenken0326:20190930174627p:plain

こんにちは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

このように、包含判定の場合は、部分シーケンスでは一致しないので、注意が必要です。

Copyright ©2017- BeProud Inc. All rights reserved.