はじめに
さいきん競技プログラミングをやっています。
今回は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は一時変数ですので、値の名称はなんでもいいのです!!!
以上です
コメント