第55回【Python】変数の入れ替え、指定要素の入れ替え

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

はじめに

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

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

55 は言わずと知れた、松井秀喜の背番号。日本でずっと見ていたかった。世界一の日本の野球を捨ててまでメジャーに挑戦する理由はなんなんでしょう。日本でエースや 4 番と言われた人たちが、マイナーでくすぶっているのを見るとモヤモヤします。

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

変数の入れ替え

整数型の変数を 2 つ宣言して整数 X, Y を格納したのち、2 つの変数の中身を入れ替えた後の 2 つの変数の値を出力してください。


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

・0 ≦ X, Y ≦ 100


1 2

よくあるやつを、まずはよくあるパターンで書いてみる。

Python
X,Y = map(int,input().split())
tmp = X
X = Y
Y = tmp
print(X,Y)

古典(Classic)ですね。

Python らしく書いてみる。

Python
X,Y = map(int,input().split())
X,Y = Y,X
print(X,Y)
VBA
XY = Split(Cells(1, 1), " ")
X = Val(XY(0))
Y = Val(XY(1))
tmp = X
X = Y
Y = tmp
Debug.Print X & " " & Y

指定要素の入れ替え

配列 A の要素数 N と配列 A の各要素 A_1, A_2, …, A_N , 交換する A の要素番号 X, Y が与えられるので、A_X と A_Y を入れ替えた後の A を出力してください。


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

・ 2 ≦ N ≦ 100
・ 1 ≦ X , Y ≦ N , X != Y
・ 0 ≦ A_i ≦ 100 (1 ≦ i ≦ N)


5
1
2
3
4
5
3 5

これも、古典と Python らしくとの 2 パターンで書いてみる。

Python
N = int(input())
A = [int(input()) for _ in range(N)]
X,Y = map(int,input().split())
tmp = A[X-1]
A[X-1] = A[Y-1]
A[Y-1] = tmp
print(*A,sep="\n")
Python
N = int(input())
A = [int(input()) for _ in range(N)]
X,Y = map(int,input().split())
A[X-1],A[Y-1] = A[Y-1],A[X-1]
print(*A,sep="\n")
VBA
N = Cells(1, 1)
Dim A() As Integer
ReDim A(N - 1)
For i = 0 To N - 1
    A(i) = Cells(i + 2, 1)
Next
XY = Split(Cells(N + 2, 1), " ")
X = Val(XY(0))
Y = Val(XY(1))
tmp = A(X - 1)
A(X - 1) = A(Y - 1)
A(Y - 1) = tmp
For Each v In A
    Debug.Print v
Next

最後に

クラシックってつくとなんかすごい感じがする。まぁ、完全に確立された手順なわけで、他の言語でも当たり前のように使われている手法なんだけど。それを潰しにかかった Python は素敵だ。

もちろん、Python を始めた頃にはこんなやり方知らなかったので、古典で書いていた。何かで検索かけて偶然見つけたのだが、ちょっと感動したのを覚えている。そして、LeoSaki(旦那)の引き出しが増えたというわけだ。

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

Pythonpaiza,学習,Python

Posted by LeoSaki