Python基礎１ リスト型、ディクト型、セット型の操作メモ

pythonの基礎を備忘録として残しておく

# summary

```python
x = [0, 1, 2, 3, 4]
print(x[0])  # １番目の要素切り出し
print(x[1:4])  # ２番目から4番目の要素の切り出し
print(x[-1])  # 最後の要素の切り出し
print(x[-2:])  # 後ろから２つの要素の切り出し
x[2] = 6  # 3番目の要素を６に変更
x.append(5)  # 最後に5を追加
print(len(x))  # リストの長さ
print(sum(x))  # 要素の合計
print(max(x))  # 最大値
print(min(x))  # 最小値
print(2 in x)  # 2がリストに存在するか
print(tuple(x))  # リストをタプルへ変換

x = list(range(1, 11))  # 1〜10のリスト
x.sort()  # 昇順
x.sort(reverse = True)  # 降順 
* print(x.sort()) はダメ。Noneが返って来る

x = {'A': 10, 'B': 20, 'C': 30}
x['A'] = 15  # 'A'のバリューを15に変更
x['D'] = 60  # 'D':60 を追加
print(x.keys())  # キーの取り出し
print(list(x.keys()))  # キーを取り出し、リストに
print(x.values())  # バリューの取り出し
print(list(x.values()))  # バリューを取り出し、リストに
print(x.items())  # キーとバリューを取り出す
print(list(x.items()))  # キーとバリューを取り出し、リストに
print(x['B'])  # キー'B'のバリュー
print(x.get('B'))  # キー'B'のバリュー
print(x.get('D'))  # キー'D'のバリュー（存在しないと'None'）
x['C'] = x['C']*10  # 'C'のバリューを10倍

x = [3, 2, 1, 6, 6, 5, 5, 4]
print( set(x) )  # セット（出力は{})
print( list(set(x)) )  # セットをリストに
＊ 重複は削除され昇順になる

print( set(x1) | set(x2) )  # 和集合
print( set(x1) & set(x2) )  # 積集合
print( set(x1) - set(x2) )  # 差集合
```


# 1.リスト型

リストからの要素の切り出し

```python
x = [0, 1, 2, 3, 4]
print(x[0])  # １番目の要素切り出し
print(x[1:4])  # ２番目から4番目の要素の切り出し
print(x[-1])  # 最後の要素の切り出し
print(x[-2:])  # 後ろから２つの要素の切り出し

# 出力
0
[1, 2, 3]
4
[3, 4]
```
リストの要素変更

```python
x = [0, 1, 2, 3, 4]
x[2] = 6  # 3番目の要素を６に変更
print(x)

# 出力
[0, 1, 6, 3, 4]
```

リストへの要素追加

```python
x = [0, 1, 2, 3, 4]
x.append(5)  # 最後に5を追加
print(x) 

# 出力
[0, 1, 2, 3, 4, 5]
```

リスト操作

```python

x = [0, 1, 2, 3, 4]
print(len(x))  # リストの長さ
print(sum(x))  # 要素の合計
print(max(x))  # 最大値
print(min(x))  # 最小値
print(2 in x)  # 2がリストに存在するか
print(tuple(x))  # リストをタプルへ変換

# 出力
5
10
4
0
True
(0, 1, 2, 3, 4)
```
リストの結合

```python
x1 = [0, 1, 2]
x2 = [3, 4, 5]
print(x1 + x2)

# 出力
[0, 1, 2, 3, 4, 5]
```

range関数を使って、1〜10までのリストを作る

```python

x = list(range(1, 11)) 
print(x) 

# 出力結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
```
リストの並べ変え。print(x.sort())とかやると None が返って来るので注意。

```python
x = [ 1, 3, 2, 4, 5]
x.sort()  # 昇順（数字の低いものから）
print(x)
x.sort(reverse = True)  # 降順（数字の高いものから）
print(x)

# 出力
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]

```
# 2. ディクト型

ディクショナリーは、dict()のキーワード引数を利用して作成できる。 

```python
x = dict(A = 10, B = 20, C = 30)
print(x)

# 出力
{'A': 10, 'B': 20, 'C': 30}
```
ディクショナリーの要素を変更する

```python
x = {'A': 10, 'B': 20, 'C': 30}
x['A'] = 15  # 'A'のバリューを15に変更
print(x)

#　出力
{'A': 15, 'B': 20, 'C': 30}
```
ディクショナリーに要素を追加する

```python
x = {'A': 10, 'B': 20, 'C': 30}
x['D'] = 60  # 'D':60 を追加
print(x)

# 出力
{'A': 10, 'B': 20, 'C': 30, 'D': 60}
```
key を取り出し、リストに変換

```python
x = {'A': 10, 'B': 20, 'C': 30}
print(x.keys())  # キーの取り出し
print(list(x.keys()))  # リストに変換

# 出力
dict_keys(['A', 'B', 'C'])
['A', 'B', 'C']
```
バリューを取り出し、リストに変換

```python
x = {'A': 10, 'B': 20, 'C': 30}
print(x.values())  # バリューの取り出し
print(list(x.values()))  # リストに変換

# 出力
dict_values([10, 20, 30])
[10, 20, 30]
```

キーとバリューの両方を取り出す

```
x = {'A': 10, 'B': 20, 'C': 30}
print(x.items())  # キーとバリューを取り出す
print(list(x.items()))  # リストに変換

# 出力
dict_items([('A', 10), ('B', 20), ('C', 30)])
[('A', 10), ('B', 20), ('C', 30)]
```

ディクト型 { キー１：バリュー１, キー２：バリュー２, .... } から、キーに該当するバリューを取り出す。
x['B'] と x.get('B') は同じ結果になる。しかし、リストに存在しないキーの場合、x['D']はエラーになるが、x.get['D']はNoneが返る。

```python
x = {'A':10, 'B':20, 'C':30}
print(x['B'])  # キーが'B'のバリュー取得
print(x.get('B'))  # get関数によるバリュー取得
print(x.get('D'))  # リストに存在しない場合、Noneが返る

# 出力結果
20
20
None
```
get関数を使って、キーがあればそのバリューを、キーがなければ'存在しません'と出力する。

```python
def func(key):
    x = {'A':10, 'B':20, 'C':30}
    v = x.get(key)
    if v == None:
       print('存在しません')
    else:
       print(v)

func('D')
func('C') 

# 出力
存在しません
30
```

'C' のバリューを10倍にする

```python
x = { 'A':10, 'B':20, 'C':30 }
x['C'] = x['C']*10  # 'C'のバリューに、'C'のバリューを１０倍したものを代入
print( x ) 

# 出力
{'A': 10, 'B': 20, 'C': 300}
```

#3. セット型

リストからセット{ }を作ると、要素の重複が省かれ、昇順に並ぶ。list関数でリストに変換。

```python
x = [3, 2, 1, 6, 6, 5, 5, 4]
print( set(x) )
print( list(set(x)) )

# 出力
{1, 2, 3, 4, 5, 6}  # セット型
[1, 2, 3, 4, 5, 6]  # リスト型
```
セット（集合）の演算

```python
x1 = [1, 2, 3]
x2 = [3, 4, 5]
print( set(x1) | set(x2) )  # 和集合
print( set(x1) & set(x2) )  # 積集合
print( set(x1) - set(x2) )  # 差集合

# 出力結果
{1, 2, 3, 4, 5}  # セット型
{3}  # セット型
{1, 2}  #セット型

```