Pythonのリストとタプルについてメモ
リストとタプルの違い
リスト: 動的/値の変更が可能(ミュータブル)/リサイズが可能
タプル: 静的/値の変更が不可(イミュータブル)/リサイズが不可
リストの動き
- サイズNのリストが追加された時、その後の追加を見込んだ分のM個の領域が確保される(M>N)
- 領域の再確保の回数を減らす
- メモリのコピーの回数を減らす
- appendを繰り返し N==M になると、また余剰領域を確保したリストが作成される
- 元の値が新たなリストへコピーされる
タプルの動き
- 新しいタプルを作るたびに領域確保とコピーの処理が必要
- タプルには
append
がないのでタプルの結合をするしかない
- タプルには
- 余剰領域は確保しないのでリストよりリソースは少なくて済む
- 小さめのタプルはPythonのガベージコレクションによってメモリが解放されない
- 将来の再利用のため
- つまりOSの呼び出しを抑えられるのでリストよりも高速に生成できる