【Python】list(配列)に値が入っているかどうかを判断する方法

Python
 

はじめに

さいきん競技プログラミングをやっています。

今回はPythonを使用してlist(配列)の中に特定の値が入っているかどうかを「If文やFor文」を使用しないで1行で記述する方法を紹介します。

また、1次元のlistだけでなく2次元のlistに対するアプローチも紹介します。

解法

【パターン1】1次元listの場合

my_list = ["A", "B", "C", "D", "E"]
print("A" in my_list) # 実行すると返り値として「True」が返ってきます。

my_listという1次元のlistがあったとしましょう。

そのlistの中に”A”という文字が存在しているかどうかを判定しています。

今回なら、my_listに”A”という文字は存在しているので、Trueが返ってくるでしょう。

【パターン2】2次元listの場合

two_dim_list = [["A", "B", "C"],["D", "E", "F"]]
print(any("F" in subl for subl in two_dim_list))

two_dim_listという2次元listの中に”F”という文字列が存在しているかどうかを判定しています。

2次元になると判定部分が少し複雑になっていますが、1つずつみていきましょう。

まず、

for subl in two_dim_list

というFor文によってtwo_dim_listという2次元listのうち

1つ目の1次元listである[“A”, “B”, “C”]sublという一時変数に格納しています。

次に

“F” in subl

という箇所にてsubl(1回目のループでは[“A”, “B”, “C”]でしたね)に”F”が入っているかどうか、を判定しています。

もちろん”F”は入っていないので1回目はFalseが返ってきます。

これを2つ目のlist([“D”, “E”, “F”])でも見ると”F”が入っているためTrueと返ってきます。

Forが終了するとイメージとしては以下のような判定式になっています。

any([False, True])

最後にanyが引数内を判定することで最終的にTrueの出力が返ってくるというわけですね。

補足ですが、sublは一時変数ですので、値の名称はなんでもいいのです!!!

以上です

コメント

タイトルとURLをコピーしました