1510 文字
8 分
【自分用】競プロ用Pythonチートシート&リンク集
自分用。競技プログラミング用のPythonチートシート&リンク集
入力(str)
#入力値の例:さかなs=input()
#入力値の例:さかな まぐろ さんま かつおs=input().split()
#入力値の例:さかな まぐろ さんまs1,s2,s3=input().split()
#入力値の例:#さかな#まぐろstr_list=[]for i in range(n): str_list.append(input())
#入力値の例:#さかな まぐろ さんま#かつお いか たこstr_list=[]for i in range(n): str_list.append(input().split())
#文字列を1文字1マスで2次元配列にするstr_list=[]for i in range(h): str_list.append(list(input()))
入力(int)
#入力値の例:1n=int(input())
#入力値の例:1 2 3 4 5n=list(map(int,input().split()))
#入力値の例:1 2n,m=map(int,input().split())
#入力値の例:#1#2int_list=[]for i in range(n): int_list.append(int(input()))
#入力値の例:#1 2 3#4 5 6int_list=[]for i in range(n): int_list.append(list(map(int,input().split())))
出力(print)
#文字列を表示print("ここに表示したい文字列")
#複数の変数の中身を1行で表示print(s1,s2,s3)
#区切り文字を指定して出力(例はスペース区切りの場合)#例:0 1 2ex_list=[0,1,2]for i in ex_list: print(i,end=" ")
#区切り文字を指定してリストなどを出力(例はスペース区切りの場合)#例:0 1 2ex_list=[0,1,2]for i in range(len(ex_list)): ex_list[i]=str(i)print(" ".join(ex_list))
if
if 条件式: print("A")elif 条件式: print("B")else: print("AとB以外")
for
#n回繰り返す(0~n-1)for i in range(n): print(i)
#初期値nでmまで繰り返す(n~m-1)for i in range(n,m): print(i)
for i in range(n): #条件に当てはまるとき処理を1周分スキップ if i==2: continue #条件に当てはまるときループを抜ける if i==5: break
#xにex_listの中身が順番に入るfor ex in ex_list: print(ex)
#複数のリストから同時に要素を取得してループを回す(zip(list,list,...))for ex1,ex2 in zip(ex_list1,ex_list2): print(ex1,ex2)
#逆順にループを回す(range)for i in reversed(range(n)): print(i)
for i in range(n):[::-1] print(i)
#逆順にループを回す(list)for ex in reversed(ex_list): print(ex)
for ex in ex_list[::-1]: print(ex)
参考
Pythonのbreak文とcontinue文の使い方 | UX MILK
zip
list
#listを空で作成(長さ0)sample_list=[]
#listを初期値ありで作成sample_list=["s1","s2"]
#listに変換sample_list=list(s)
#要素を追加sample_list.append(s)
#listを参照(n=0~len(sample_list)-1)print(sample_list[n])
#listの長さを取得len(sample_list)
#listを逆順にするsample_list.reverse()
set
#setを空で作成(長さ0)sample_set=set()
#setを初期値ありで作成sample_set={"s1","s2"}
#setに変換sample_set=set(s)
#要素を追加sample_set.add(s)
listやsetなどに対して合計、最大値、最小値を求める
#合計sum()
#最大値max()
#最小値min()
文字列操作・検索など(join、find、split)
#文字列を逆向きにするreversed_str=''.join(list(reversed(s)))
#文字列に対して特定の文字の位置を取得(0~)s_index=s.find("example")
#listを文字列にする(この場合は区切り文字なし)''.join(ex_list)
#文字列をlistにする(引数なしの場合は空白文字で区切る)s.split()
参考
Pythonでリストや文字列を逆順に並べ替え(reverse, reversed) | note.nkmk.me
in、not in
#xがyに含まれていたらTrueif x in y: print("")
#xがyに含まれていなかったらTrueif x not in y: print("")
スライス
※スライスの”:“の後ろに設定する数字の部分はスライスの範囲に含まれないので注意が必要。(例:[0:5]にした場合0~4(5-1)までが範囲となる)
#すべてex_list[:]#0~4番目ex_list[:5]#5~(一番後ろ)番目ex_list[5:]
#2次元配列(※numpy配列)#0行目のみex_list[0,:]#0列目のみex_list[:,0]
ライブラリ
使ったことがあるライブラリ
numpy
#インポートimport numpy as np
#listをnumpy配列にするnp_list=np.array(sample_list)
#numpy配列をlistにするsample_list=tolist(np_list)
itertools
#インポートimport itertools
#順列を生成p = itertools.permutations(listやsetなど, 選択する個数)
#順列を列挙for p in itertools.permutations(listやsetなど, 選択する個数): print(p)
参考
すごいぞitertoolsくん #Python - Qiita
アルゴリズム
使ったことがあるアルゴリズム
回文
素因数分解
累積和
同じ文字が連続する部分文字列を見つける正規表現
DFS・BFS
【AtCoder】Pythonで使いこなす深さ優先探索・幅優先探索
困ったときに見るリンク
競技プログラミングで解法を思いつくための典型的な考え方 | アルゴリズムロジック
【AtCoder】WAが出た時の対処法(灰色コーダー向け)【競技プログラミング】 #Python - Qiita
【Python版】AtCoderのコンテスト中に「問題が解けない!」となった時に読む記事 #競技プログラミング - Qiita