#はじめに
超初心者の自分用の備忘録なので間違ってたらごめんなさい。
#forとかifとか
###for文(複数行にわたって書く)
n = 2
for i in range(n):
print(i)
#0
#1
###for節(簡単なものは一行でも書ける。リスト内包表記という。)
n = 2
a = [i for i in range(n)]
print(a)
#[0, 1]
###if文
thenはいらないけど「:」忘れない。
イコールは二つ繋げないといけない。
a = 3
if a == 1:
print('aは1です')
elif a == -1:
print('aは-1です')
else:
print('aは1と-1以外です')
#aは1と-1以外です
#input()のシミュレーションをinput.txtを使ってする方法
paizaのスキルチェック問題を受けるときに、
自分の環境でテストするための準備として、標準入力input()の代わりにinput.txtを
同じディレクトリに置いてテストするときのコード。
もっといい方法があるかもしれない。
path = './input.txt'
with open(path) as f:
line = f.readlines()
a = [i.strip() for i in line] #strip()で改行の'¥n'を削除
#numpyのarrayを括弧なしの空白区切りで中身だけ標準出力する方法
2次元配列を標準出力するときに
import numpy as np
H = 2
W = 3
HW = H * W
x = np.arange(HW).reshape(H,W) #H行W列の2次元配列xを作成
for i in range(H):
strtmp = ""
for j in range(W):
strtmp = strtmp + " " + str(x[i,j])
print(strtmp[1:]) #行頭のスペースを消して出力する
#出力結果
#0 1 2
#3 4 5
#リストの要素を昇順・降順で並び替える方法
a = [1,3,2,4]
a.sort()
print(a)
#[1, 2, 3, 4]
a.sort(reverse=True)
print(a)
#[4, 3, 2, 1]
#プログラムを途中で止める方法
import sys
sys.exit()
#リストの重複している要素を抽出する方法
l1 = [1, 3, 4]
l2 = [2, 3, 4]
l3 = [1, 2, 3, 9]
l = l1 + l2 + l3
dup = [x for x in set(l) if l.count(x) == 3]
print(dup)
#[3]
#リストの最大値のインデックスを取得する方法
maxで最大値、minで最小値。
l1 = [1, 3, 4]
print(max(l1))
#4
print(l1.index(max(l1)))
#2
#リストの要素を数える方法
大きめのデータは、arr.count(x)よりもcollections.Counter(arr)の方がはやい
下の例は小さめのデータですが、len(a)が10**5とかでも2sec以内に収まるはず。
参考:ABC072 C
import collections
n=int(input())
a=[3 1 4 1 5 9 2]
c=collections.Counter(a)
ans=1
for i in range(min(a),max(a)+1):
goukei=c[i-1]+c[i]+c[i+1]
ans=max(ans,goukei)
print(ans) #4