競プロに使える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が挟まってきているのでエラーが発生します。文字列型に直すのを忘れずに。

この記事が気に入ったらサポートをしてみませんか?