競プロに使えるPythonのコード集【随時編集・追加】
備忘録として。初心者向け。
行列の操作
基本的にlistで扱います。
入力
入力は次のようなもの。すべて整数値。
行数N 列数M
要素11 要素12 … 要素1n
要素21 要素22 … 要素2n
⋮
要素m1 要素m2 … 要素mn
# 行の入力
N_M = list(input().split()) # N_Mの中身: ["N", "M"]
N = int(N_M[0]) # Nの中身: N
inputMatrix = [] # 行列を格納する配列
# 行列の入力
for _ in range(N):
inputVal = list(map(int, input().split()))
inputMatrix.append(inputVal)
#この時点でinputMatrixには行列データが2次元配列として格納されている
出力
競プロの出力判定では、行の最後に空白が入るとWA(Wrong Answer)となるのでそこの処理が少し面倒です。
for s in inputMatrix:
space = ' '
for t in s:
#最後に空白が入らないようにする処理
if t == s[-1]: #リストの名前[-1] :リストの最後の要素
space = ''
print(t, end=space) #改行させない
print() #改行
(for 変数 in リスト: についての説明)
下記のコードは、myListの数値を前から一つずつ順番に出力するものです。
1ループ目 : myListの文字aがxに格納され、その変数x、つまり文字aが出力。
2ループ : myListの文字bがxに格納され、その変数x、つまり文字bが出力。
……というような処理です。
myList = ['a', 'b', 'c', 'd']
for x in myList:
print(x)
#----出力----
>> a
>> b
>> c
>> d
操作
列ごとの総和を求めるならこのようなコードで書けます。
inputMatrix = [[1,2,3],[4,5,6],[7,8,9]] #処理されるlist
result = [] #結果格納用
for s in inputMatrix:
result.append(sum(s))
print()
a = 4
b = 3
#以下の2行は同じ意味
print("aは" + str(a) + "でありbは"+ str(b) +"です")
print("aは{}でありbは{}です".format(a,b))
#次はエラー
print("aは"+ a + "でありbは" + b + "です")
1回目のprint:(文字列)と(数値を文字列にしたもの)を結合している
2回目のprint:formatにより文字列の中に値を投げ入れてるイメージ
最終行は文字列の結合でint型のaとbが挟まってきているのでエラーが発生します。文字列型に直すのを忘れずに。
この記事が気に入ったらサポートをしてみませんか?