【Python】よく使いそうな書き方まとめ

## はじめに

Python勉強中です。
よく使うであろう、もしくは使いそうな書き方を備忘録としてまとめます。

## 文字列関連

### 文字列の演算
```python
book = 'book'
print(book * 4)
```

    bookbookbookbook
    


### bool型への変換

```python
print(bool('')) 
print(bool('bool'))
print('oo' in 'bool') # 'oo'が含まれている事を確認
print('x' not in 'book') # 'x'が含まれていない事を確認
```

    False
    True
    True
    True
    
### format

```python
a = 'Python'
b = 'YEAR!!'
print(f'{a}, {b}')
print('{}, {}'.format(a, b))
```

    Python, YEAR!!
    Python, YEAR!!
    

### パディング


```python
# 左詰め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
    

# 配列関連

リストの要素を変数に代入できる。


```python
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]`までの要素が対象となる。


```python
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]
    

### リストの結合


```python
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
    

### リストの型変換


```python
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]
    

### 逆順に変更


```python
arr = [0, 1, 2, 3, 4, 5, 6]
print(arr[::-1])
```

    [6, 5, 4, 3, 2, 1, 0]
    

### 辞書型のKeyとValueを交換


```python
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


```python
arr = [1,2,3,4,5,6]
print(list(filter(lambda i: i%2 == 0, arr)))
```

    [2, 4, 6]
    

### zip
#### 2つの配列を合わせてタプルにする


```python
nums = ['1', '2', '3', '4']
chars = ['a', 'b', 'c', 'd']
print(list(zip(nums, chars)))
```

    [('1', 'a'), ('2', 'b'), ('3', 'c'), ('4', 'd')]
    

### Map
配列の各要素を処理する。


```python
nums = [1, 2, 3, 4, 5]
print(list(map(lambda i: i * 2, nums)))
```

    [2, 4, 6, 8, 10]
    

## for文


```python
arr = [0, 1, 2, 3, 4, 5, 6]
for item in arr:
    print(item)
```

    0
    1
    2
    3
    4
    5
    6
    


### 逆順
```python
for item in reversed(arr):
    print(item)
```

    6
    5
    4
    3
    2
    1
    0
    

### インデックスも一緒に取得したい

```python
for i, item in enumerate(arr):
    print(i, item)
```

    0 0
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    


### 一定回数ループだけしたい
```python
for _ in range(3):
    print("a")
```

    a
    a
    a
    


### インデックスの開始位置を変更
```python
for i in range (2, 5):
    print(i)
```

    2
    3
    4
    


### インデックスの増幅変更
```python
for i in range (0, 10, 2):
    print(i)
```

    0
    2
    4
    6
    8
    


```python
# インデックスをデクリメント
for i in range(10, 0, -1):
    print(i)
```

    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    

## 内包表記


```python
numbers = [str(v) for v in range(10)]
print(numbers)
```

    ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
    


### 条件式を付ける
```python
evens = [v for v in range(10) if v%2 == 0]
print(evens)
```

    [0, 2, 4, 6, 8]
    


### 囲みを変えるとセットになる。
```python
numbers = {str(v) for v in range(10)}
print(numbers)
```

    {'7', '1', '5', '0', '6', '4', '3', '2', '9', '8'}
    


### dictにもできる。
```python
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重ループで内包表記


```python
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]
    
## 参考資料

[Python実践入門: 陶山 嶺, 技術評論社](https://gihyo.jp/book/2020/978-4-297-11111-3)