第52回【Python】指定要素があるかの判定、指定要素の先頭位置

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

はじめに

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

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

ChatGPT 便利ですね。LeoSaki(旦那)もよく利用します。が、本当に正しいかどうかの判断は結局人間がやる必要があります。ChatGPT が吐き出したものを鵜呑みにしてはならない。まぁ、それを差し引いても便利なのは間違いないのですけれど。

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

指定要素があるかの判定

配列 A の要素数 N と整数 K , 配列 A の各要素 A_1, A_2, …, A_N が与えられるので、A に K が 1 つでも含まれている場合は Yes を、含まれていない場合は No を出力してください。


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

・1 ≦ N ≦ 100
・0 ≦ K , A_i ≦ 100 (1 ≦ i ≦ N)


5 3
1
2
3
4
5

「含まれている場合」って汎用性高い気がします。

Python
N,K = map(int,input().split())
A = [int(input()) for _ in range(N)]
if K in A:
    print('Yes')
else:
    print('No')
VBA
NK = Split(Cells(1, 1), " ")
N = Val(NK(0))
K = Val(NK(1))
Dim A() As Integer
ReDim A(N - 1)
For i = 0 To N - 1
    A(i) = Cells(i + 2, 1)
Next
For Each v In A
    If v = K Then
        Debug.Print "Yes"
        Exit Sub
    End If
Next
Debug.Print "No"

指定要素の先頭位置

配列 A の要素数 N と整数 K , 配列 A の各要素 A_1, A_2, …, A_N が与えられるので、K であるような A の要素のうち、要素番号が最小のものを出力してください。
A に K が含まれない場合は -1 を出力してください。


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

・1 ≦ N ≦ 100
・0 ≦ K , A_i ≦ 100 (1 ≦ i ≦ N)


5 3
1
2
3
4
3

これも、なんとなく実務で利用することが多そうな内容。

Python
N,K = map(int,input().split())
A = [int(input()) for _ in range(N)]
ans = -1
for i in range(N):
    if A[i] == K:
        ans = i + 1
        break
print(ans)
VBA
NK = Split(Cells(1, 1), " ")
N = Val(NK(0))
K = Val(NK(1))
Dim A() As Integer
ReDim A(N - 1)
For i = 0 To N - 1
    A(i) = Cells(i + 2, 1)
Next
ans = -1
For i = 0 To N - 1
    If A(i) = K Then
        ans = i + 1
        Exit For
    End If
Next
Debug.Print ans

最後に

実務でも間違いなく使うことがありそうな内容でした。Python の in 演算子をいつも忘れてしまう。VBA 同様にひとつずつ確認するものアリだとは思うけれど、便利な演算子が用意されているときは積極的に使いたい。

今回も VBA 同様にひとつずつ確認するコードを書いている途中で、もっと楽なやり方あったような、と突然思い出して書き直したのは内緒。

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

Python学習,Python,paiza

Posted by LeoSaki