カレーのライスをtech忘れ

odmishienのtechメモ

Pythonのリストとタプルについてメモ

リストとタプルの違い

リスト: 動的/値の変更が可能(ミュータブル)/リサイズが可能
タプル: 静的/値の変更が不可(イミュータブル)/リサイズが不可

リストの動き

  • サイズNのリストが追加された時、その後の追加を見込んだ分のM個の領域が確保される(M>N)
    • 領域の再確保の回数を減らす
    • メモリのコピーの回数を減らす
  • appendを繰り返し N==M になると、また余剰領域を確保したリストが作成される
  • 元の値が新たなリストへコピーされる

タプルの動き

  • 新しいタプルを作るたびに領域確保とコピーの処理が必要
    • タプルには appendがないのでタプルの結合をするしかない
  • 余剰領域は確保しないのでリストよりリソースは少なくて済む
  • 小さめのタプルはPythonガベージコレクションによってメモリが解放されない
    • 将来の再利用のため
    • つまりOSの呼び出しを抑えられるのでリストよりも高速に生成できる