【Python】競プロ用テンプレート（VS Codeユーザースニペット機能）

**競プロ**のコンテストに参加するときに使っている**Pythonのテンプレート**（スニペット）です

小文字大文字など好みがあると思うので、使いやすいように修正して使ってください

## VS Codeのユーザースニペット機能
こちらの記事で丁寧に説明されています

https://qiita.com/12345/items/97ba616d530b4f692c97

## スニペットファイル

**最新**のスニペットファイルは**Github**にあります
[**Gitリポジトリはこちら**](https://github.com/rararapi/python-liblary/blob/main/.vscode/plainpython.code-snippets)

<details><summary>[2023/01/15]時点のスニペットファイル</summary><div>

```:python.code-snippets
{
	"n=in": {
		"prefix": "n=",
		"body": "n=int(input())",
	},
	"k=in": {
		"prefix": "k=",
		"body": "k=int(input())",
	},
	"m=in": {
		"prefix": "m=",
		"body": "m=int(input())",
	},
	"s=": {
		"prefix": "s=",
		"body": "s=input()",
	},
	"n,m=": {
		"prefix": "n,m=",
		"body": "n,m=map(int,input().split())",
	},
	"h,w=": {
		"prefix": "h,w=",
		"body": "h,w=map(int,input().split())",
	},
	"a=li": {
		"prefix": "a=li",
		"body": "a=list(map(int,input().split()))",
	},
	"int(input())": {
		"prefix": "ii",
		"body": "int(input())",
	},
	"for": {
		"prefix": "fo",
		"body": "for i in range(n)",
	},
	"for k": {
		"prefix": "fok",
		"body": "for k in range(n):",
	},
	"for m": {
		"prefix": "fom",
		"body": "for k in range(m):",
	},
	"for _": {
		"prefix": "fo_",
		"body": "for _ in range(n):",
	},
	"map": {
		"prefix": "ma",
		"body": "map(int,input().split())",
	},
	"map-1": {
		"prefix": "mala",
		"body": "map(lambda x:int(x)-1,input().split())",
	},
	"list": {
		"prefix": "li",
		"body": "list(map(int,input().split()))",
	},
	"i-1": {
		"prefix": "la",
		"body": "lambda x:int(x)-1",
	},
	"defaultdict": {
		"prefix": "di=",
		"body": "from collections import defaultdict\ndi=defaultdict()",
	},
	"sys.set": {
		"prefix": "sys",
		"body": "import sys\nsys.setrecursionlimit(10**6)",
	},
	"uf":{
		"prefix": "uf",
		"body": "from collections import defaultdict\nclass UnionFind():\n\tdef __init__(self, n):\n\t\tself.n = n\n\t\tself.parents = [-1] * n\n\n\tdef find(self, x):\n\t\tif self.parents[x] < 0:\n\t\t\treturn x\n\t\telse:\n\t\t\tself.parents[x] = self.find(self.parents[x])\n\t\t\treturn self.parents[x]\n\n\tdef union(self, x, y):\n\t\tx = self.find(x)\n\t\ty = self.find(y)\n\n\t\tif x == y:\n\t\t\treturn\n\n\t\tif self.parents[x] > self.parents[y]:\n\t\t\tx, y = y, x\n\n\t\tself.parents[x] += self.parents[y]\n\t\tself.parents[y] = x\n\n\tdef size(self, x):\n\t\treturn -self.parents[self.find(x)]\n\n\tdef same(self, x, y):\n\t\treturn self.find(x) == self.find(y)\n\n\tdef members(self, x):\n\t\troot = self.find(x)\n\t\treturn [i for i in range(self.n) if self.find(i) == root]\n\n\tdef roots(self):\n\t\treturn [i for i, x in enumerate(self.parents) if x < 0]\n\n\tdef group_count(self):\n\t\treturn len(self.roots())\n\n\tdef all_group_members(self):\n\t\tgroup_members = defaultdict(list)\n\t\tfor member in range(self.n):\n\t\t\tgroup_members[self.find(member)].append(member)\n\t\treturn group_members\n\nuf=UnionFind(n)",
	},
	"INF":{
		"prefix": "INF",
		"body": "INF=float('inf')",
	},
	"mod":{
		"prefix": "mod",
		"body": "mod=998244353",
	},
	"MOD":{
		"prefix": "MOD",
		"body": "MOD=1000000007",
	},
	"inside":{
		"prefix": "inside",
		"body": "def inside(y,x):\n\treturn 0<=y<h and 0<=x<w",
	},
	"yes":{
		"prefix": "yes",
		"body": "print('Yes')",
	},
	"no":{
		"prefix": "no",
		"body": "print('No')",
	},
	"abc":{
		"prefix": "abc",
		"body": "abc = 'abcdefghijklmnopqrstuvwxyz'",
	},
	"ABC":{
		"prefix": "ABC",
		"body": "ABC = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'",
	},
}
```

</div></details>

## 終わりに
ユーザスニペット機能を利用するとコーディングが楽になります
よく使うコードはじゃんじゃんスニペットへ登録していいと思います