【Python】アルゴリズム問題を解く際によく使う小技集
自分の備忘録もかねて随時追加していきます。
キーワードを書いておくのでそれでググれば詳細は出てくると思います。
▽:キーワードマーク
空白区切りの文字列を数値配列に変換
str_num = '1 2 3 4 5 6'
list_num = [int(x) for x in str_num.split()]
print(list_num)
# [1,2,3,4,5,6]
str_num = '1 2 3 4 5 6'
list_num = [int(x) for x in str_num.split()]
print(list_num)
# [1,2,3,4,5,6]
▽内包表記
2次元配列の重複を削除
dup_list = [
[1,2],
[3,4],
[5,6],
[1,2],
[3,4]]
uni_list = list(map(list,set(map(tuple,dup_list))))
print(uni_list)
# [[1,2],
# [3,4],
# [5,6]]
dup_list = [
[1,2],
[3,4],
[5,6],
[1,2],
[3,4]]
uni_list = list(map(list,set(map(tuple,dup_list))))
print(uni_list)
# [[1,2],
# [3,4],
# [5,6]]
▽2次元配列 重複行削除
文字列を文字の配列に変換
word = 'abcde'
word_list = list(word)
print(word_list)
# ['a','b','c','d','e']
配列をアンパック
num_list = [1,2,3,4,5,6]
print(num_list)
# [1,2,3,4,5,6]
print(*num_list)
# 1 2 3 4 5 6
#配列の前後に要素を入れる場合なども使用
add_list = [-1,0,*num_list,7,8]
print(add_list)
# [-1,0,1,2,3,4,5,6,7,8]
word = 'abcde'
word_list = list(word)
print(word_list)
# ['a','b','c','d','e']
num_list = [1,2,3,4,5,6]
print(num_list)
# [1,2,3,4,5,6]
print(*num_list)
# 1 2 3 4 5 6
#配列の前後に要素を入れる場合なども使用
add_list = [-1,0,*num_list,7,8]
print(add_list)
# [-1,0,1,2,3,4,5,6,7,8]
▽アンパック
H × Wの2次元配列を(H + 2) × (W + 2)へと拡張する
H = 4
W = 3
field = [
[1,2,3],
[4,5,6],
[7,8,9],
[1,2,3]]
sentinel = []
#ダミーデータを0とする
sentinel.append([0 for i in range(W + 2)])
for f in field:
sentinel.append([0,*f,0])
sentinel.append([0 for i in range(W + 2)])
print(sentinel)
#[[0,0,0,0,0],
# [0,1,2,3,0],
# [0,4,5,6,0],
# [0,7,8,9,0],
# [0,1,2,3,0],
# [0,0,0,0,0]]
H = 4
W = 3
field = [
[1,2,3],
[4,5,6],
[7,8,9],
[1,2,3]]
sentinel = []
#ダミーデータを0とする
sentinel.append([0 for i in range(W + 2)])
for f in field:
sentinel.append([0,*f,0])
sentinel.append([0 for i in range(W + 2)])
print(sentinel)
#[[0,0,0,0,0],
# [0,1,2,3,0],
# [0,4,5,6,0],
# [0,7,8,9,0],
# [0,1,2,3,0],
# [0,0,0,0,0]]
▽番兵法
配列の前後を拡張することで、例外処理を省いて効率化
Author And Source
この問題について(【Python】アルゴリズム問題を解く際によく使う小技集), 我々は、より多くの情報をここで見つけました https://qiita.com/ShqnD/items/ac318e25bb93f030f68f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .