はじめに
Python勉強中です。
よく使うであろう、もしくは使いそうな書き方を備忘録としてまとめます。
文字列関連
文字列の演算
book = 'book'
print(book * 4)
bookbookbookbook
bool型への変換
print(bool(''))
print(bool('bool'))
print('oo' in 'bool') # 'oo'が含まれている事を確認
print('x' not in 'book') # 'x'が含まれていない事を確認
False
True
True
True
format
a = 'Python'
b = 'YEAR!!'
print(f'{a}, {b}')
print('{}, {}'.format(a, b))
Python, YEAR!!
Python, YEAR!!
パディング
# 左詰め0埋め
print('{0:0<5}'.format(1))
# 中央寄せ
print('{0:0^5}'.format(1))
# 右詰め0埋め
print('{0:0>5}'.format(1))
# スペース埋め
print('{0: <5}'.format(1))
print('{0: ^5}'.format(1))
print('{0: >5}'.format(1))
10000
00100
00001
1
1
1
配列関連
リストの要素を変数に代入できる。
arr = [0, 1, 2]
a, b, c = arr
print(a, b, c)
x, y = arr[1:3]
print(x, y)
0 1 2
1 2
スライス
リストの要素を指定して取得できる。
arr[開始インデックス:末尾インデックス:増減幅]
※末尾インデックスで指定したインデックスの一つ前の要素が末尾となる。
つまり、arr[x:y]
の場合、arr[x]
~arr[y-1]
までの要素が対象となる。
arr = [0, 1, 2, 3, 4, 5, 6]
print(arr[:5])
print(arr[0:5])
print(arr[1:5])
print(arr[:])
print(arr[:-1])
print(arr[0:6:2])
print(arr[::2])
print(arr[::3])
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[1, 2, 3, 4]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5]
[0, 2, 4]
[0, 2, 4, 6]
[0, 3, 6]
リストの結合
arr = [0, 1, 2, 3, 4, 5, 6]
print(''.join(map(str, arr))) # 123456
arr = ['a', 'b', 'c', 'd', 'e']
print(''.join(arr))
print(','.join(arr))
0123456
abcde
a,b,c,d,e
リストの型変換
arr = [0, 1, 2, 3, 4, 5, 6]
arr = list(map(str, arr))
print(arr)
arr = list(map(int, arr))
print(arr)
['0', '1', '2', '3', '4', '5', '6']
[0, 1, 2, 3, 4, 5, 6]
逆順に変更
arr = [0, 1, 2, 3, 4, 5, 6]
print(arr[::-1])
[6, 5, 4, 3, 2, 1, 0]
辞書型のKeyとValueを交換
dic = {'a': 1, 'b': 2, 'c': 3}
dic = {v : k for k, v in dic.items()}
print(dic)
{1: 'a', 2: 'b', 3: 'c'}
filter
arr = [1,2,3,4,5,6]
print(list(filter(lambda i: i%2 == 0, arr)))
[2, 4, 6]
zip
2つの配列を合わせてタプルにする
nums = ['1', '2', '3', '4']
chars = ['a', 'b', 'c', 'd']
print(list(zip(nums, chars)))
[('1', 'a'), ('2', 'b'), ('3', 'c'), ('4', 'd')]
Map
配列の各要素を処理する。
nums = [1, 2, 3, 4, 5]
print(list(map(lambda i: i * 2, nums)))
[2, 4, 6, 8, 10]
for文
arr = [0, 1, 2, 3, 4, 5, 6]
for item in arr:
print(item)
0
1
2
3
4
5
6
逆順
for item in reversed(arr):
print(item)
6
5
4
3
2
1
0
インデックスも一緒に取得したい
for i, item in enumerate(arr):
print(i, item)
0 0
1 1
2 2
3 3
4 4
5 5
6 6
一定回数ループだけしたい
for _ in range(3):
print("a")
a
a
a
インデックスの開始位置を変更
for i in range (2, 5):
print(i)
2
3
4
インデックスの増幅変更
for i in range (0, 10, 2):
print(i)
0
2
4
6
8
# インデックスをデクリメント
for i in range(10, 0, -1):
print(i)
10
9
8
7
6
5
4
3
2
1
内包表記
numbers = [str(v) for v in range(10)]
print(numbers)
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
条件式を付ける
evens = [v for v in range(10) if v%2 == 0]
print(evens)
[0, 2, 4, 6, 8]
囲みを変えるとセットになる。
numbers = {str(v) for v in range(10)}
print(numbers)
{'7', '1', '5', '0', '6', '4', '3', '2', '9', '8'}
dictにもできる。
dic = {str(x) : x for x in range(10)}
print(dic)
{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
2重ループで内包表記
arr = [x * y for x in range(1, 4) for y in range(1, 4)]
print(arr)
[1, 2, 3, 2, 4, 6, 3, 6, 9]