第32回【Python】配列に含まれている? 1、配列に含まれている? 2、配列に含まれている? 3

現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

Python をゼロから勉強してみよう、のコーナー 32 回目です。

それでは、今日も頑張ってみようと思います。

配列に含まれている? 1

以下のような配列があります。

10 13 21 1 6 51 10 8 15 6

この中に、6 が含まれているなら Yes、含まれていないなら No を出力してください。

要素を一つずつ検査する方法をとるか、もっと簡単な方法をとるか、学習という意味では・・・両方でしょ。

Python
L = [10, 13, 21, 1, 6, 51, 10, 8, 15, 6]
for li in L:
    if li == 6:
        print("Yes")
        break
else:
    print("No")
Python
L = [10, 13, 21, 1, 6, 51, 10, 8, 15, 6]
if 6 in L:
    print("Yes")
else:
    print("No")
VBA
L = Array(10, 13, 21, 1, 6, 51, 10, 8, 15, 6)
flg = True
For Each li In L
    If li = 6 Then
        Debug.Print "Yes"
        flg = False
        Exit For
    End If
Next
If flg Then Debug.Print "No"

Python では for ~ else を利用することで、for 文が break しなかった場合の処理を書くことができる。他の言語ではなかなかそれが難しいので、フラグ管理を行うことが多い。

配列に含まれている? 2

整数 N が与えられます。
以下の配列に、整数 N が含まれているなら Yes、含まれていないなら No を出力してください。

5 12 6 84 14 25 44 3 7 20

すべてのテストケースにおいて、以下の条件をみたします。

・N は 1 以上 100 以下の整数


入力例

12

含まれているかどうか検査する値を標準入力から受け取るパティーン。

Python
N = int(input())
L = [5, 12, 6, 84, 14, 25, 44, 3, 7, 20]
for li in L:
    if li == N:
        print("Yes")
        break
else:
    print("No")
Python
N = int(input())
L = [5, 12, 6, 84, 14, 25, 44, 3, 7, 20]
if N in L:
    print("Yes")
else:
    print("No")
VBA
N = Cells(1, 1)
L = Array(5, 12, 6, 84, 14, 25, 44, 3, 7, 20)
flg = True
For Each li In L
    If li = N Then
        Debug.Print "Yes"
        flg = False
        Exit For
    End If
Next
If flg Then Debug.Print "No"

配列に含まれている? 3

1 行目に整数 N, M が与えられます。
2 行目に N 個の整数 a_1, a_2, …, a_N が与えられます。
N 個の整数の中に、整数 M が含まれているなら Yes、含まれていないなら No を出力してください。


すべてのテストケースにおいて、以下の条件をみたします。

・N, M は 1 以上 100 以下の整数
・a_i (1 ≦ i ≦ N) は 1 以上 100 以下の整数


入力例

5 1
1 2 3 4 5

すべてを標準入力から受け取るパティーン。

Python
N,M = map(int,input().split())
L = list(map(int,input().split()))
for li in L:
    if li == M:
        print("Yes")
        break
else:
    print("No")
Python
N,M = map(int,input().split())
L = list(map(int,input().split()))
if M in L:
    print("Yes")
else:
    print("No")
VBA
NM = Split(Cells(1, 1), " ")
N = Val(NM(0))
M = NM(1)
L = Split(Cells(2, 1), " ")
flg = True
For Each li In L
    If li = M Then
        Debug.Print "Yes"
        flg = False
        Exit For
    End If
Next
If flg Then Debug.Print "No"

型を意識しないといけない。数値と文字列で比較しても絶対にイコールにはならない。今回の場合は、いちいちすべてを数値に変換するのが面倒だったので、文字列と文字列で比較するように書いてみた。

最後に

実際に仕事でコードを書いていると、in 演算子を結構使っている気がする。ふとしたことで in 演算子の存在を忘れてしまって、要素を一つずつ検査するように書いて、その途中で in 演算子でええやん、って反省する。これだけ in 演算子と書いたのだから、もう忘れない!

型を意識するのはとても重要なことだと思う。Python はなんでも入ってしまうので、意識がおろそかになってしまって、エラーが出ているのを見ることがある。融通利きすぎるのも考えものなのかもしれない。

引き続き、よろしくお願いいたします!

Pythonpaiza,学習,Python

Posted by LeoSaki