【Python】 in 演算子 /not in 演算子の使いかた

in 演算子(またはnot in 演算子)は、リスト等のデータに指定の要素が含まれているかどうかを確認できます。例えば、

  • リストに、特定の値の要素が存在しているかどうかを知りたい
  • 辞書に、特定のキーが存在しているかどうかを知りたい
  • 文字列、ある特定の部分文字列が含まれているか知りたい

こんな場合に使います。

リストや辞書だけでなく、文字列に含まれる部分文字列の存在を確認する際にも使えます。

# 2020/2/12 記事更新

確認した環境

  • OS: Ubuntu 16.04LTS
  • Python3.7.4

in/not in演算子の使い方

inまたはnot in は、ある要素が存在するかをどうかを確認する演算子です。

  • in演算子

    x s に存在する場合はTrueを、そうでない場合はFalseを返します。

    x in s
  • not in演算子

    x s の存在しない場合にTrueを返します。

    x not in s

x 全ての組み込みのシーケンス型と集合型、辞書 に対応しています。
但し、文字列やバイト列型については、 x s の部分文字列の場合にのみTrueを返します。

具体例

  • リストに存在するかどうか
  • # リストの場合
    >>> s = [1, 2, 3, 4, 5]
    >>> 1 in s
    True
    
    >>> 6 in s
    False
  • 文字列に存在するかどうか
  • # 部分文字列が一致している場合のみTrue
    >>> s = 'one two three four five'
    >>> 'two' in s
    True
    
    >>> 'six' in s
    False
    
    >>> s = 'abcdef'
    >>> 'cde' in s
    True
    
    >>> 'ac' in s
    False
  • 辞書に存在するかどうか
    • キーを検索
    • デフォルトではキーが検索されます。

      >>> s = {'a':1, 'b':2, 'c':3}
      
      >>> 'b' in s
      True
      
      >>> 'f' in s
      False
    • 値を検索
    • 辞書の値を検索する場合は、values()を使います。

      >>> s = {'a':1, 'b':2, 'c':3}
      
      # values()を使います。
      >>> 1 in s.values()
      True
  • not in演算子の場合
  • not in演算子は判定がin演算子と逆になります。その他の性質はin演算子と同じです。

    >>> s = [1, 2, 3, 4, 5]
    >>> 1 not in s
    False
    
    >>> 6 not in s
    True

in演算子は条件分岐のif文でよく使われますね。

>>> def func(x):
...     s = ['one', 'two', 'three', 'four']
...     if x in s:
...         print('OK')
...     else:
...         print('NG')

# 実行結果
>>> func('two')
OK
>>> func('six')
NG

まとめ

今回は、in 演算子/not in 演算子を使って、リストや辞書、文字列からある特定の要素が存在するかどうかを確認する方法についてまとめました。

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!