【Python】 リストの基本的な操作

# はじめに
初めまして、現在ITエンジニアになるために勉強をしている化学工学系の理系大学生です。qiitaにはアウトプットのために記事を投稿していこうと思います。
言語は機械学習に興味があるのでpythonの勉強をしています。今回はリストの基本的な操作方法についてまとめていこうと思います。
# Pythonのリスト型について
1つの変数に対して複数の値を入れられて、その際に使用する変数の型をリスト型と呼びます。
# リストの基本的な操作
### リストの作成
```python
lst = [1,2,3,4,5]
```
### リストの要素の取得
```python
lst = [1,2,3,4,5]
print(lst[0])
```
出力結果
```python
[1]
```
インデックスは最初を0として1,2,3,4と振られていきます。0と指定すると先頭の要素を取得します。今回の場合だと1です。またマイナスにすると末尾の要素から取得できます。-1と指定すると今回の場合だと5を取得出来ます。

### リストの要素をスライス
```python
lst = [1,2,3,4,5]
print(lst[1:4])
```
出力結果
```python
[2,3,4]
```
`1:4`とすると1から3までの要素を取得出来ます。4番目の要素は取得されません。`1:`だけだと1,2,3,4番目の要素が取得でき、[2,3,4,5]と出力されます。`:4`だけだと0から3番目の要素が取得でき、[1,2,3,4]と出力されます。
### リストの要素の変更
```python
lst = [1,2,3,4,5]
print(lst)
lst[2] = 6
print(lst)
```
出力結果
```python
[1, 2, 3, 4, 5]
[1, 2, 6, 4, 5]
```
`lst[2] = 6`は2番目の要素を6に変える。



### 末尾に要素の追加 append
```python
lst = [1,2,3,4,5]
lst.append(6)
print(lst)
```
出力結果
```python
[1,2,3,4,5,6]
```
### 要素の挿入 insert
```python
lst = [1,2,3,4,5]
lst.insert(3,7)
print(lst)
```
出力結果
```python
[1,2,3,7,4,5]
```
`insert(3,7)`は3番目の位置に要素7を追加する。

### リストの連結 extend
```python
lst = [1,2,3,4,5]
lst.extend([11, 12, 13])
print(lst)
```
出力結果
```python
[1,2,3,4,5,11,12,13]
```
+演算子を使うことでも連結できます。
```python
lst = [1,2,3,4,5]
lst = lst + [11, 12, 13]
print(lst)
```
出力結果
```python
[1,2,3,4,5,11,12,13]
```
### 要素の削除 pop,del,remove,clear
#### pop
```python
lst = [1,2,3,4,5]
lst.pop()
print(lst)
```
出力結果
```python
[1,2,3,4]
```
`pop()`で末尾の要素を削除できます。また`pop(n)`とすることでn番目の要素を削除できます。
```python
lst = [1,2,3,4,5]
lst.pop(2)
print(lst)
```
出力結果
```python
[1,2,4,5]
```
#### del
```python
lst = [1,2,3,4,5]
del lst[3]
print(lst)
```
出力結果
```python
[1,2,3,5]
```
`del リスト[n]`でn番目の要素を削除。また`del リスト[i:j]`とすることでiからj番目の要素を削除できます。
```python
lst = [1,2,3,4,5]
del lst[1:3]
print(lst)
```
出力結果
```python
[1,4,5]
```
#### remove
```python
lst = [1,2,3,55,5]
lst.remove(55)
print(lst)
```
出力結果
```python
[1,2,3,5]
```
removeメソッドはpopメソッドと違いインデックスではなく要素を指定して削除します。指定した要素と同じものが複数あった場合インデックスの小さいものが削除されます。
```python
lst = [1,2,3,4,5,2]
lst.remove(2)
print(lst)
```
出力結果
```python
[1,3,4,5,2]
```
#### clear
```python
lst = [1,2,3,4,5]
lst.clear()
print(lst)
```
出力結果
```python
[]
```
clearメソッドはリスト内の要素の全削除です。

### リストの整列 sort,sorted
#### sort
```python
lst = [1,4,2,6]
lst.sort()
print(lst)

lst=["white","cat","cool","global"]
lst.sort()
print(lst)
```
出力結果
```python
[1, 2, 4, 6]
['cat', 'cool', 'global', 'white']
```
降順で並べるときは`sort(reverse=True)`と書くとできます。
```python
lst = [1,4,2,6]
lst.sort(reverse=True)
print(lst)

lst=["white","cat","cool","global"]
lst.sort(reverse=True)
print(lst)
```
出力結果
```python
[6, 4, 2, 1]
['white', 'global', 'cool', 'cat']
```
sortメソッドの注意点としてはsort(2,1,4,"white","cat")みたいに型が異なるとエラーが起きること。リストの要素の順番が変わるので元のリストの順番を保持したいときには向いていない等があげられます。
#### sorted
```python
lst = [1,4,2,6]
print(sorted(lst))
print(lst)
```
出力結果
```python
[1, 2, 4, 6]
[1, 4, 2, 6]
```
sorted関数を使うと元のリストを変えずに整列できます。また降順は`sorted(リスト,reverse=True)`でできます。
```python
lst = [1,4,2,6]
print(sorted(lst,reverse=True))
print(lst)
```
出力結果
```python
[6, 4, 2, 1]
[1, 4, 2, 6]
```
### リスト内の順序の反転 reverse,reversed
#### reverse
```python
lst = [1,4,2,6]
lst.reverse()
print(lst)
```
出力結果
```python
[6, 2, 4, 1]
```
#### reversed
reversed関数を使うと元のリストを変えずに反転できます。
```python
lstA = [1,4,2,6]
lstB = list(reversed(lstA))
print(lstB)
print(lstA)
```
出力結果
```python
[6, 2, 4, 1]
[1, 4, 2, 6]
```
reversed関数の注意点はリストではなくイテレータを返します。
### リストの複製 copy
```python
import copy
lstA = [1,4,2,6]
lstB = copy.copy(lstA)
print(lstB)  
print(lstA)  
```
出力結果
```python
[1, 4, 2, 6]
[1, 4, 2, 6]
```
### リストの長さ(要素数）を取得 len
```python
lst = [1,2,3,4,5]
print(len(lst))
```
出力結果
```python
5
```
# 終わりに
今回はリストの基本的な操作についてまとめました。次回以降も学習した内容をまとめていこうと思います。
# 参考文献
・[【Python】リスト操作まとめ](https://qiita.com/ell/items/8057198ef33e554e54a2)
・[Pythonでリスト（配列）に要素を追加する](https://note.nkmk.me/python-list-append-extend-insert/)
・[paizaラーニング　新・python入門編](https://paiza.jp/works)