【Python】paizaでよく使う構文
※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。
概要
paizaでよく使う構文をまとめました。
内容
入力値をまとめて取得
import sys
input_lines = sys.stdin.read().splitlines()
リスト内の型変換
converted_list = list(map(int, input_list))
文字列を分割してリストで取得
splited_list = input_str.split(' ')
リストを結合して出力
print(' '.join(print_list))
2次元リストの転置
transposed_lists = [list(i) for i in zip(*lists)] transposed_lists = list(map(list, zip(*lists)))
順列・重複ありの2次元リスト
import itertools h_index = range(h) w_index = range(w) lists = [list(i) for i in itertools.product(h_index, w_index)]
連続した値を等間隔の2次元リストで取得
import numpy as np continuous_lists = [list(i) for i in np.arange(1, h * w + 1).reshape(h, w)]
1次元リストを等間隔で分割
one_dimensional_list = [1, 2, 3, 4] # 分割後の1次元リストに何個データが入っているかの定義 item_count = 2 def make_set_list(one_dimensional_list, item_count, split_count): start_index = split_count * item_count end_index = (split_count + 1) * item_count return one_dimensional_list[start_index:end_index] # 分割数分、ループを回す set_lists = [make_set_list(one_dimensional_list, item_count, i) for i in range(2)]
同じ値を10個持ったリストの作成
result = [0] * 10
リストの中身を逆順にする
result = list(reversed([1, 2, 3]))
2次元のリストを1次元に変換する
# 処理が遅いので、リスト内包表記やitertoolsを使用するのもあり result = sum([[1], [2], [3]], []) # リスト内包表記 result = [j for i in [[1], [2], [3]] for j in i]
参照渡しではない1次元リストのコピー
a = [1, 2, 3] # 1 result = a[:] # 2 result = list(a) # 3 import copy result = copy.copy(a) # 多層構造のリストのコピーはcopyモジュールのdeepcopyを使用する
辞書をキーでソート
d = {"b": "1", "a": "2", "c": "3"} d = dict(sorted(d.items())) print(d)