メインコンテンツへスキップ
【Python】if element not in Listと書きましょう

【Python】if element not in Listと書きましょう

·2 分
Programming Python
かずさプログラマー
著者
かずさプログラマー
業務の作業自動化を行っています。Go、VBA、Pythonを主に使用しています。過去にはC#、VB.Net、JavaScriptも使用していました。

Pythonでリスト内に要素があるか確認するにはin演算子を使用します。

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

if 1 in numbers:
    print('1はあります。')

リスト内に要素がないかどうか調べるときはnot演算子とin演算子を組み合わせます。

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

if not 6 in numbers: #PEP8違反
    print('6はありません。')

if 6 not in numbers: #PEP8違反じゃない
    print('6はありません。')

if not 6 in numbersとif 6 not in numbersですが動作に違いはありません。

しかし最初のif文ではPyCharmなどのIDEでPEP 8の違反Warningが出ます。

なぜ、’not element in List’と書くと良くないか検索したところStack Overflowで回答を見つけました。

こちらで答えているDaniel Stutzbachさんの答えが分かりやすいです。

Stylistically, I try to avoid not x is y.
Although the compiler will always treat it as not (x is y),
a human reader might misunderstand the construct as (not x) is y.
If I write x is not y then there is no ambiguity.

さきほどのPEP 8が出ている違反コードは
‘if not 6 in numbers’と6ではないものがnumbersにあるか?と誤って読まれる可能性があるということですね。

‘if 6 not in numbers’は、6がnumbersに存在しないよね? ということを
明確にif文の条件としているので、曖昧さを排除した書き方になってます。

よく’if not element in list’と書いては、IDEにPEP8違反を指摘されて直しているので次回から気をつけたいと思います。

関連記事

【Python】Dictionary(辞書)から値を削除するときdelとpopメソッドどっちを使う?
·1 分
Programming Python
Pythonコードをexe化
·4 分
Programming Python
【VBA】ExcelからADOでAccessのデータを更新する
·2 分
Programming VBA