【Python3】AtCoderチートシート
ついに俺も用意しますよ
◇入出力系
# 12 5 2 といったバラバラの値を格納 a, b, c = map(int, input().split()) # 1 2 3 4 5といった数値を格納 a = list(map(input().split())) # N個の文字を配列Sに格納 S = [input() for _ in range(N)]
◇list, setなど
# listの要素はappendで追加する l = [] l.append(1) # l = [1] # pop(0)で先頭をとれる # ただし実行時間はO(N)かかるため、可能な限り[0]でアクセスするほうがいい # listは以下で初期化できる li = [0]*m # m個の[0]で初期化 # dequeについて # 要素そのものに対してのアクセス速度は遅い # 要素が何番目かわかっているならlist、単に両端に対してアクセスしたければdequeをつかう from collections import deque d = deque() d.append("a") # 右から入れる d.appendleft("b") # 左から入れる d,pop() # 右から出す d,popleft() # 左から出す # listの重複をsetで消す a = [1, 2, 3, 4, 5, 5] l_a = set(a) # ここで重複削除 # l_a = [1, 2, 3, 4, 5] # 配列のソート a = [1, 3, 2] a.sort() # 降順の場合はsort(reverse=True) # a = [1, 2, 3] # 文字列の3番目までを出力 a = "asdfg" print(a[0:3]) print(a[:3]) # asd # 配列の合計 sum(a) # キーの存在確認 d = () if "key_name" in d: # for文で使える、添え字含めて取得できる関数 for i, item enumerate(l): # dict 値の削除 dic={"test":3} del ["test"]
◇文字列
# 文字列の大文字小文字を変更 str.upper() # strをすべて大文字へ str.lower() # strをすべて小文字へ # 空白で区切られた文字列をつなげる -でつなげたければ"-".join(S) S = ["a", "s", "d"] p = "".join(S) # p = asd # 大文字小文字判定は以下でできる str = "A" if (srtr.isupper()): print("BIG!") else: print("SMALL!") # BIG!となる str = "a" if (srtr.islower()): print("SMALL!") else: print("BIG!") # SMALL!となる # 最初が大文字、残りが小文字 str.capitalize() # 判定系 数字かどうか判定 str.isdecimal(): 全ての文字が十進数字なら真、そうでなければ偽 半角・全角のアラビア数字が真 str.isdigit(): 全ての文字が数字なら真、そうでなければ偽 半角・全角のアラビア数字、特殊数字が真 str.isnumeric(): 全ての文字が数を表す文字なら真、そうでなければ偽 半角・全角のアラビア数字、特殊数字、漢数字が真 英字かどうか判定 str.isalpha(): 全ての文字が英字なら真、そうでなければ偽 便宜上「英字」と書いているが、平仮名やカタカナ、漢字なども真 英数字かどうか判定 str.isalnum(): 全ての文字が英数字なら真、そうでなければ偽 各文字が上のメソッドで真となれば真
◇整数、小数
# 整数はint, 小数はfloat a = float(input()) # 小数は.で整数と小数を分離する手もあり # input = 1.22 a, b = map(int, input().split(".")) # a=1, b=22 # 商は//, あまりは%, 普通の割り算は/ a = 23 print(a//5, a%5, a/5) # 4, 3, 4.6
◇順序付きdict
# 順序つきdict ソートなどができるので便利 from collections import OrderedDict p = OrderedDict() # ソートするためのラムダ関数 p_rev = OrderedDict( sorted(p.items(), key=lambda x: x[1]) ) # ソートしバリューを順に取り出す、キーを取り出す場合は.keys() for i in p_rev.values():
◇bit全探索
for i in range(2**n): # nが0 or 1の数 for j in range(n): # n桁目に対して if ((i >> j) & 1): # 各値が1なら生きる
◇再帰メモ化
# フィボナッチの例 N = int(input()) dic = {1:1, 2:1} def calc(x): if x in dic: return dic[x] else: dic[x] = calc(x-1)+calc(x-2) return dic[x] print(calc(N))
◇その他便利系
# アルファベットごとの出現回数をカウントするdict W = {"a":0, "b":0, "c":0, "d":0,"e":0,"f":0,"g":0,"h":0,"i":0,"j":0,"k":0,"l":0,"m":0,"n":0,"o":0,"p":0,"q":0,"r":0,"s":0,"t":0,"u":0,"v":0,"w":0,"x":0,"y":0,"z":0} # アルファベットと数値を紐づけたdict W = {"a":1, "b":2, "c":3, "d":4,"e":5,"f":6,"g":7,"h":8,"i":9,"j":10,"k":11,"l":12,"m":13,"n":14,"o":15,"p":16,"q":17,"r":18,"s":19,"t":20,"u":21,"v":22,"w":23,"x":24,"y":25,"z":26} W = {"A":1, "B":2, "C":3, "D":4,"E":5,"F":6,"G":7,"H":8,"I":9,"J":10,"K":11,"L":12,"M":13,"N":14,"O":15,"P":16,"Q":17,"R":18,"S":19,"T":20,"U":21,"V":22,"W":23,"X":24,"Y":25,"Z":0}
以上